Thread: PQescapeBytea v 7.2.3 BUG?
should sprintf(buffer, "%c", 0x5C); readsz = 1; buffer2Ptr =(unsigned char *) PQescapeBytea(buffer, readsz, &esclen); for (ctr = 0; ctr < strlen(buffer2Ptr); ctr++) { printf("char[%d] is [%c]\n", ctr, buffer2Ptr[ctr]); } printf("esclen is [%d]\n", esclen); printf("buffer2Ptr is [%s]\n", buffer2Ptr); result in the following output? char[0] is [\] char[1] is [\] char[2] is [\] char[3] is [\] esclen is [5] buffer2Ptr is [\\\\] OR should it result in char[0] is [\] char[1] is [\] esclen is [3] buffer2Ptr is [\\]
Reid Thompson <reid.thompson@ateb.com> writes: > should > sprintf(buffer, "%c", 0x5C); > readsz = 1; > buffer2Ptr =(unsigned char *) PQescapeBytea(buffer, readsz, &esclen); > for (ctr = 0; ctr < strlen(buffer2Ptr); ctr++) > { > printf("char[%d] is [%c]\n", ctr, buffer2Ptr[ctr]); > } > printf("esclen is [%d]\n", esclen); > printf("buffer2Ptr is [%s]\n", buffer2Ptr); > result in the following output? > char[0] is [\] > char[1] is [\] > char[2] is [\] > char[3] is [\] > esclen is [5] > buffer2Ptr is [\\\\] Looks okay to me. Note the 7.2 manual mistakenly claims that esclen doesn't include the trailing null in the output. According to the current manual, it does. regards, tom lane
Reid Thompson wrote: > should [...snip...] > result in the following output? > > char[0] is [\] > char[1] is [\] > char[2] is [\] > char[3] is [\] > esclen is [5] > buffer2Ptr is [\\\\] > > OR should it result in > char[0] is [\] > char[1] is [\] > esclen is [3] > buffer2Ptr is [\\] It should result in the former: test=# select '\\\\'::bytea as string, length('\\\\'::bytea) as length; string | length --------+-------- \\ | 1 (1 row) HTH, Joe