|
8 | 8 | *
|
9 | 9 | *
|
10 | 10 | * IDENTIFICATION
|
11 |
| - * $Header: /cvsroot/pgsql/src/backend/storage/large_object/inv_api.c,v 1.47 1999/02/03 21:17:20 momjian Exp $ |
| 11 | + * $Header: /cvsroot/pgsql/src/backend/storage/large_object/inv_api.c,v 1.48 1999/02/04 14:52:00 momjian Exp $ |
12 | 12 | *
|
13 | 13 | *-------------------------------------------------------------------------
|
14 | 14 | */
|
@@ -540,10 +540,16 @@ inv_write(LargeObjectDesc *obj_desc, char *buf, int nbytes)
|
540 | 540 | else
|
541 | 541 | {
|
542 | 542 | if (obj_desc->offset>obj_desc->highbyte)
|
| 543 | +{ |
543 | 544 | tuplen=inv_wrnew(obj_desc,buf,nbytes-nwritten);
|
| 545 | +ReleaseBuffer(buffer); |
| 546 | +} |
544 | 547 | else
|
545 | 548 | tuplen=inv_wrold(obj_desc,buf,nbytes-nwritten,&tuple,buffer);
|
546 |
| -ReleaseBuffer(buffer); |
| 549 | +/* inv_wrold() has already issued WriteBuffer() |
| 550 | + which has decremented local reference counter |
| 551 | + (LocalRefCount). So we should not call |
| 552 | + ReleaseBuffer() here. -- Tatsuo 99/2/4 */ |
547 | 553 | }
|
548 | 554 |
|
549 | 555 | /* move pointers past the amount we just wrote */
|
|