Fix osl_del_row().
[paraslash.git] / osl.c
diff --git a/osl.c b/osl.c
index 7b4f91f..5c80641 100644 (file)
--- a/osl.c
+++ b/osl.c
@@ -1575,7 +1575,7 @@ int osl_del_row(struct osl_table *t, struct osl_row *row)
                        mark_mapped_object_invalid(t, r->num, i);
                        continue;
                }
                        mark_mapped_object_invalid(t, r->num, i);
                        continue;
                }
-               if (st == OSL_NO_STORAGE)
+               if (st == OSL_NO_STORAGE && !(cd->storage_flags & OSL_DONT_FREE))
                        free(r->volatile_objects[col->volatile_num].data);
        }
        if (t->num_mapped_columns) {
                        free(r->volatile_objects[col->volatile_num].data);
        }
        if (t->num_mapped_columns) {