goo/GooHash.cc | 8 ++++++-- goo/gfile.cc | 2 ++ goo/gmem.cc | 28 ++++++++++++++++++++++++---- 3 files changed, 32 insertions(+), 6 deletions(-)
New commits: commit bd1076da03f76fb62998a9409d366412f4aa5d13 Author: Albert Astals Cid <[email protected]> Date: Tue Aug 30 20:45:36 2011 +0200 xpdf303: Complain for gmalloc and grealloc < 0 diff --git a/goo/gmem.cc b/goo/gmem.cc index 4189ac1..768b283 100644 --- a/goo/gmem.cc +++ b/goo/gmem.cc @@ -71,7 +71,12 @@ inline static void *gmalloc(size_t size, bool checkoverflow) { void *data; unsigned long *trl, *p; - if (size <= 0) { + if (size < 0) { + fprintf(stderr, "Invalid memory allocation size\n"); + if (checkoverflow) return NULL; + else exit(1); + } + if (size == 0) { return NULL; } size1 = gMemDataSize(size); @@ -104,7 +109,12 @@ inline static void *gmalloc(size_t size, bool checkoverflow) { #else void *p; - if (size <= 0) { + if (size < 0) { + fprintf(stderr, "Invalid memory allocation size\n"); + if (checkoverflow) return NULL; + else exit(1); + } + if (size == 0) { return NULL; } if (!(p = malloc(size))) { @@ -130,7 +140,12 @@ inline static void *grealloc(void *p, size_t size, bool checkoverflow) { void *q; int oldSize; - if (size <= 0) { + if (size < 0) { + fprintf(stderr, "Invalid memory allocation size\n"); + if (checkoverflow) return NULL; + else exit(1); + } + if (size == 0) { if (p) { gfree(p); } @@ -149,7 +164,12 @@ inline static void *grealloc(void *p, size_t size, bool checkoverflow) { #else void *q; - if (size <= 0) { + if (size < 0) { + fprintf(stderr, "Invalid memory allocation size\n"); + if (checkoverflow) return NULL; + else exit(1); + } + if (size == 0) { if (p) { free(p); } commit 5a42b3693a9e501a27d790d4aeafcb68f63cb950 Author: Albert Astals Cid <[email protected]> Date: Tue Aug 30 20:38:39 2011 +0200 xpdf303: Honor the deleteKeys setting diff --git a/goo/GooHash.cc b/goo/GooHash.cc index 0b96920..f4a92f1 100644 --- a/goo/GooHash.cc +++ b/goo/GooHash.cc @@ -107,7 +107,9 @@ void GooHash::replace(GooString *key, void *val) { if ((p = find(key, &h))) { p->val.p = val; - delete key; + if (deleteKeys) { + delete key; + } } else { add(key, val); } @@ -119,7 +121,9 @@ void GooHash::replace(GooString *key, int val) { if ((p = find(key, &h))) { p->val.i = val; - delete key; + if (deleteKeys) { + delete key; + } } else { add(key, val); } commit d584b54eff52c47f983947b2aff0967dfed0ccf9 Author: Albert Astals Cid <[email protected]> Date: Tue Aug 30 20:36:03 2011 +0200 xpdf303: set to NULL on failure diff --git a/goo/gfile.cc b/goo/gfile.cc index 0a23f50..2e4271f 100644 --- a/goo/gfile.cc +++ b/goo/gfile.cc @@ -511,6 +511,7 @@ GBool openTempFile(GooString **name, FILE **f, const char *mode) { *name = new GooString(s); if (!(*f = fopen((*name)->getCString(), mode))) { delete (*name); + *name = NULL; return gFalse; } return gTrue; @@ -536,6 +537,7 @@ GBool openTempFile(GooString **name, FILE **f, const char *mode) { #endif // HAVE_MKSTEMP if (fd < 0 || !(*f = fdopen(fd, mode))) { delete *name; + *name = NULL; return gFalse; } return gTrue; _______________________________________________ poppler mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/poppler
