Index: edit.c ================================================================== --- edit.c +++ edit.c @@ -405,17 +405,17 @@ n=playfield[y*64+x-65]; while(n!=VOIDLINK) { if(d && objects[n]->class==m->class) return; if(c->collisionLayers&classes[objects[n]->class]->collisionLayers) { u=objects[n]->up; - pfunlink(n); - free(objects[n]); + objtrash(n); n=u; } else { n=objects[n]->up; } } + generation_number_inc=0; n=objalloc(m->class); if(n==VOIDLINK) return; objects[n]->x=x; objects[n]->y=y; objects[n]->image=m->img; Index: function.c ================================================================== --- function.c +++ function.c @@ -868,13 +868,11 @@ int x,y,z; if(!main_options['e']) return SQLITE_LOCKED; if(argc==1) { // DELETE id=sqlite3_value_int64(argv[0]); - pfunlink(id); - free(objects[id]); - objects[id]=0; + objtrash(id); } else if(sqlite3_value_type(argv[0])==SQLITE_NULL) { // INSERT if(sqlite3_value_type(argv[1])!=SQLITE_NULL || sqlite3_value_type(argv[2])!=SQLITE_NULL) return SQLITE_CONSTRAINT_VTAB; if(sqlite3_value_type(argv[3])==SQLITE_NULL) return SQLITE_CONSTRAINT_NOTNULL; if(sqlite3_value_type(argv[7])==SQLITE_NULL) return SQLITE_CONSTRAINT_NOTNULL;