postgres.git / summary / log / commit / refs

commit    96c6b333b137b471dac592fda7f2ee3c0faa6386
Author:   Tom Lane <tgl@sss.pgh.pa.us>
Date:     Wed Jun 10 03:44:42 2009 +0000
First released in: 8.4.0, 8.3.8

    Ensure xmlFree(NULL) is a no-op instead of a core dump.  Per report from
    Sergey Burladyan, there are at least some dank corners of libxml2 that
    assume this behavior, even though their published documentation suggests
    they shouldn't.
    
    This is only really a live problem in 8.3, but the code is still there
    for possible debugging use in HEAD, so patch both branches.


src/backend/utils/adt/xml.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/backend/utils/adt/xml.c b/src/backend/utils/adt/xml.c index 1bd758b1672..e30fa2db39d 100644 --- a/src/backend/utils/adt/xml.c +++ b/src/backend/utils/adt/xml.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/backend/utils/adt/xml.c,v 1.68.2.9 2009/06/08 21:32:50 petere Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/xml.c,v 1.68.2.10 2009/06/10 03:44:42 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -1325,7 +1325,9 @@ xml_repalloc(void *ptr, size_t size) static void xml_pfree(void *ptr) { - pfree(ptr); + /* At least some parts of libxml assume xmlFree(NULL) is allowed */ + if (ptr) + pfree(ptr); } [parent: 84814ef08990]