Re: [PATCHES] Fix memcmp() with different sizes.
Kurt Roeckx <[EMAIL PROTECTED]> writes: > That assumes the memcmp starts from the first char and not from > the last. If it starts from the last you have undefined > behaviour. Hmm. I suppose you could get a reference off the end of memory; pretty improbable but we have actually seen similar bugs in the field. Okay, will fix. regards, tom lane ---(end of broadcast)--- TIP 9: the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match
Re: [PATCHES] Fix memcmp() with different sizes.
On Mon, Feb 02, 2004 at 09:27:46PM -0500, Tom Lane wrote: > Kurt Roeckx <[EMAIL PROTECTED]> writes: > > - if (memcmp(re_array[i].cre_pat, text_re, text_re_len) == 0 && > > + if (VARSIZE(re_array[i].cre_pat) == text_re_len && > > + memcmp(re_array[i].cre_pat, text_re, text_re_len) == 0 && > > This is not actually broken. The first four bytes of what memcmp is > comparing are the length, and so it'll fall out immediately anyway if > the lengths differ. That assumes the memcmp starts from the first char and not from the last. If it starts from the last you have undefined behaviour. Kurt ---(end of broadcast)--- TIP 9: the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match
Re: [PATCHES] Fix memcmp() with different sizes.
Kurt Roeckx <[EMAIL PROTECTED]> writes: > - if (memcmp(re_array[i].cre_pat, text_re, text_re_len) == 0 && > + if (VARSIZE(re_array[i].cre_pat) == text_re_len && > + memcmp(re_array[i].cre_pat, text_re, text_re_len) == 0 && This is not actually broken. The first four bytes of what memcmp is comparing are the length, and so it'll fall out immediately anyway if the lengths differ. regards, tom lane ---(end of broadcast)--- TIP 6: Have you searched our list archives? http://archives.postgresql.org