From: Tom Lane Date: Sun, 29 Nov 1998 01:54:34 +0000 (+0000) Subject: Portability fix for old SunOS releases: realloc(NULL, ...) X-Git-Tag: REL6_4_2~43 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=594bee48449ba297d99084f084d93f0e1749c013;p=thirdparty%2Fpostgresql.git Portability fix for old SunOS releases: realloc(NULL, ...) doesn't work there. --- diff --git a/src/interfaces/libpq/fe-exec.c b/src/interfaces/libpq/fe-exec.c index 82c697ef05b..69f00b7a1bb 100644 --- a/src/interfaces/libpq/fe-exec.c +++ b/src/interfaces/libpq/fe-exec.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-exec.c,v 1.69 1998/10/01 01:40:21 tgl Exp $ + * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-exec.c,v 1.69.2.1 1998/11/29 01:54:34 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -214,17 +214,23 @@ addTuple(PGresult *res, PGresAttValue *tup) * * We can use realloc because shallow copying of the structure is * okay. Note that the first time through, res->tuples is NULL. - * realloc is supposed to do the right thing in that case. Also, - * on failure realloc is supposed to return NULL without damaging + * While ANSI says that realloc() should act like malloc() in that + * case, some old C libraries (like SunOS 4.1.x) coredump instead. + * On failure realloc is supposed to return NULL without damaging * the existing allocation. * Note that the positions beyond res->ntups are garbage, not * necessarily NULL. */ int newSize = res->tupArrSize + TUPARR_GROW_BY; - PGresAttValue ** newTuples = (PGresAttValue **) - realloc(res->tuples, newSize * sizeof(PGresAttValue *)); + PGresAttValue ** newTuples; + if (res->tuples == NULL) + newTuples = (PGresAttValue **) + malloc(newSize * sizeof(PGresAttValue *)); + else + newTuples = (PGresAttValue **) + realloc(res->tuples, newSize * sizeof(PGresAttValue *)); if (! newTuples) - return FALSE; /* realloc failed */ + return FALSE; /* malloc or realloc failed */ res->tupArrSize = newSize; res->tuples = newTuples; }