summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>1999-02-04 14:52:00 +0000
committerBruce Momjian <bruce@momjian.us>1999-02-04 14:52:00 +0000
commit19cc38b28dc318e6c0bc74117d8ab3d079f785a3 (patch)
tree8f6f351add30786243b7b639d56f6d2a75ad9dd4
parentfc590b6f1a16302c66e160a5f840520534400fdb (diff)
Large object write-into-middle fix from Tatsuo Ishii.
-rw-r--r--src/backend/storage/large_object/inv_api.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/backend/storage/large_object/inv_api.c b/src/backend/storage/large_object/inv_api.c
index 2802a16c13b..b8d13a21e22 100644
--- a/src/backend/storage/large_object/inv_api.c
+++ b/src/backend/storage/large_object/inv_api.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/storage/large_object/inv_api.c,v 1.47 1999/02/03 21:17:20 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/storage/large_object/inv_api.c,v 1.48 1999/02/04 14:52:00 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -540,10 +540,16 @@ inv_write(LargeObjectDesc *obj_desc, char *buf, int nbytes)
else
{
if (obj_desc->offset > obj_desc->highbyte)
+ {
tuplen = inv_wrnew(obj_desc, buf, nbytes - nwritten);
+ ReleaseBuffer(buffer);
+ }
else
tuplen = inv_wrold(obj_desc, buf, nbytes - nwritten, &tuple, buffer);
- ReleaseBuffer(buffer);
+ /* inv_wrold() has already issued WriteBuffer()
+ which has decremented local reference counter
+ (LocalRefCount). So we should not call
+ ReleaseBuffer() here. -- Tatsuo 99/2/4 */
}
/* move pointers past the amount we just wrote */