• Heikki Linnakangas's avatar
    Fix snapshot leak if lo_open called on non-existent object. · 357f7521
    Heikki Linnakangas authored
    lo_open registers the currently active snapshot, and checks if the
    large object exists after that. Normally, snapshots registered by lo_open
    are unregistered at end of transaction when the lo descriptor is closed, but
    if we error out before the lo descriptor is added to the list of open
    descriptors, it is leaked. Fix by moving the snapshot registration to after
    checking if the large object exists.
    
    Reported by Pavel Stehule. Backpatch to 8.4. The snapshot registration
    system was introduced in 8.4, so prior versions are not affected (and not
    supported, anyway).
    357f7521
inv_api.c 23.3 KB