AmendHub

Download (as of this amendment):

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);