Index: doc/src/sgml/libpq.sgml =================================================================== RCS file: /cvsroot/pgsql-server/doc/src/sgml/libpq.sgml,v retrieving revision 1.113 diff -c -c -r1.113 libpq.sgml *** doc/src/sgml/libpq.sgml 20 Mar 2003 06:23:30 -0000 1.113 --- doc/src/sgml/libpq.sgml 22 Mar 2003 03:27:47 -0000 *************** *** 1151,1156 **** --- 1151,1175 ---- + + + PQfreemem + + + Frees memory allocated by libpq + + void PQfreemem(void *ptr); + + + + + Frees memory allocated by libpq, particularly + PQescapeBytea and PQunescapeBytea. + It is needed by Win32, which can not free memory across + DLL's, unless multithreaded DLL's (/MD in VC6) are used. + + + Index: src/interfaces/libpq/fe-exec.c =================================================================== RCS file: /cvsroot/pgsql-server/src/interfaces/libpq/fe-exec.c,v retrieving revision 1.126 diff -c -c -r1.126 fe-exec.c *** src/interfaces/libpq/fe-exec.c 10 Mar 2003 22:28:21 -0000 1.126 --- src/interfaces/libpq/fe-exec.c 22 Mar 2003 03:27:53 -0000 *************** *** 284,289 **** --- 284,302 ---- return buffer; } + + /* + * PQfreemem - safely frees memory allocated + * + * Needed mostly by Win32, unless multithreaded DLL (/MD in VC6) + * Used for freeing memory from PQescapeByte()a/PQunescapeBytea() + */ + void PQfreemem(void *ptr) + { + free(ptr); + } + + /* ---------------- * Space management for PGresult. * Index: src/interfaces/libpq/libpq-fe.h =================================================================== RCS file: /cvsroot/pgsql-server/src/interfaces/libpq/libpq-fe.h,v retrieving revision 1.89 diff -c -c -r1.89 libpq-fe.h *** src/interfaces/libpq/libpq-fe.h 20 Mar 2003 06:23:30 -0000 1.89 --- src/interfaces/libpq/libpq-fe.h 22 Mar 2003 03:27:54 -0000 *************** *** 254,259 **** --- 254,260 ---- size_t *bytealen); extern unsigned char *PQunescapeBytea(const unsigned char *strtext, size_t *retbuflen); + extern void PQfreemem(void *ptr); /* Simple synchronous query */