jcs
/amend
/amendments
/186
bile: Set new map_ptr to new map obj, not the one about to be freed
Also set bile->last_error consistently.
jcs made amendment 186 18 days ago
--- bile.c Fri Oct 2 08:38:14 2026
+++ bile.c Sat Oct 3 22:24:32 2026
@@ -970,6 +970,7 @@ bile_write_map(struct bile *bile)
if ((ret = bile_flush(bile, false)) != noErr) {
warn("bile_write_map: flush failed: %d", ret);
+ _bile_error = bile->last_error = ret;
return -1;
}
@@ -980,9 +981,9 @@ bile_write_map(struct bile *bile)
bile->old_map_ptr.pos = bile->map_ptr.pos;
bile->old_map_ptr.size = bile->map_ptr.size;
bile->old_map_ptr.id = bile->map_ptr.id;
- bile->map_ptr.pos = new_map_obj->pos;
- bile->map_ptr.size = new_map_obj->size;
- bile->map_ptr.id = new_map_obj->id;
+ bile->map_ptr.pos = new_map_obj_in_new_map->pos;
+ bile->map_ptr.size = new_map_obj_in_new_map->size;
+ bile->map_ptr.id = new_map_obj_in_new_map->id;
/* write new pointer to point at new map object */
bile_xwriteat(bile, BILE_MAGIC_LEN, &bile->map_ptr,
@@ -996,6 +997,7 @@ bile_write_map(struct bile *bile)
if ((ret = bile_flush(bile, false)) != noErr) {
warn("bile_write_map: final flush failed: %d", ret);
+ _bile_error = bile->last_error = ret;
return -1;
}
@@ -1016,7 +1018,7 @@ bile_xwriteat(struct bile *bile, const size_t pos, con
/* add new space aligning to BILE_ALLOCATE_SIZE */
tsize = pos + len;
tsize += BILE_ALLOCATE_SIZE - (tsize % BILE_ALLOCATE_SIZE);
- _bile_error = SetEOF(bile->frefnum, tsize);
+ _bile_error = bile->last_error = SetEOF(bile->frefnum, tsize);
if (_bile_error)
return 0;
_bile_error = bile->last_error = bile_flush(bile, true);