Ignore:
Timestamp:
Dec 30, 2009, 7:13:45 PM (12 years ago)
Author:
rbri
Message:

PDF plugin: Poppler library updated to version 0.12.3

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/poppler/mypoppler/goo/gmem.cc

    r257 r277  
    1515//
    1616// Copyright (C) 2005 Takashi Iwai <tiwai@suse.de>
    17 // Copyright (C) 2007, 2008 Albert Astals Cid <aacid@kde.org>
     17// Copyright (C) 2007-2009 Albert Astals Cid <aacid@kde.org>
    1818// Copyright (C) 2008 Jonathan Kew <jonathan_kew@sil.org>
    1919//
     
    6464#endif /* DEBUG_MEM */
    6565
    66 void *gmalloc(size_t size) GMEM_EXCEP {
     66inline static void *gmalloc(size_t size, bool checkoverflow) GMEM_EXCEP {
    6767#ifdef DEBUG_MEM
    6868  int size1;
     
    8181#else
    8282    fprintf(stderr, "Out of memory\n");
    83     exit(1);
     83    if (checkoverflow) return NULL;
     84    else exit(1);
    8485#endif
    8586  }
     
    116117#else
    117118    fprintf(stderr, "Out of memory\n");
    118     exit(1);
     119    if (checkoverflow) return NULL;
     120    else exit(1);
    119121#endif
    120122  }
     
    123125}
    124126
    125 void *grealloc(void *p, size_t size) GMEM_EXCEP {
     127void *gmalloc(size_t size) GMEM_EXCEP {
     128  return gmalloc(size, false);
     129}
     130
     131void *gmalloc_checkoverflow(size_t size) GMEM_EXCEP {
     132  return gmalloc(size, true);
     133}
     134
     135inline static void *grealloc(void *p, size_t size, bool checkoverflow) GMEM_EXCEP {
    126136#ifdef DEBUG_MEM
    127137  GMemHdr *hdr;
     
    138148    hdr = (GMemHdr *)((char *)p - gMemHdrSize);
    139149    oldSize = hdr->size;
    140     q = gmalloc(size);
     150    q = gmalloc(size, checkoverflow);
    141151    memcpy(q, p, size < oldSize ? size : oldSize);
    142152    gfree(p);
    143153  } else {
    144     q = gmalloc(size);
     154    q = gmalloc(size, checkoverflow);
    145155  }
    146156  return q;
     
    164174#else
    165175    fprintf(stderr, "Out of memory\n");
    166     exit(1);
     176    if (checkoverflow) return NULL;
     177    else exit(1);
    167178#endif
    168179  }
     
    171182}
    172183
    173 void *gmallocn(int nObjs, int objSize) GMEM_EXCEP {
     184void *grealloc(void *p, size_t size) GMEM_EXCEP {
     185  return grealloc(p, size, false);
     186}
     187
     188void *grealloc_checkoverflow(void *p, size_t size) GMEM_EXCEP {
     189  return grealloc(p, size, true);
     190}
     191
     192inline static void *gmallocn(int nObjs, int objSize, bool checkoverflow) GMEM_EXCEP {
    174193  int n;
    175194
     
    183202#else
    184203    fprintf(stderr, "Bogus memory allocation size\n");
    185     exit(1);
    186 #endif
    187   }
    188   return gmalloc(n);
     204    if (checkoverflow) return NULL;
     205    else exit(1);
     206#endif
     207  }
     208  return gmalloc(n, checkoverflow);
     209}
     210
     211void *gmallocn(int nObjs, int objSize) GMEM_EXCEP {
     212  return gmallocn(nObjs, objSize, false);
    189213}
    190214
    191215void *gmallocn_checkoverflow(int nObjs, int objSize) GMEM_EXCEP {
    192   int n;
    193 
    194   if (nObjs == 0) {
    195     return NULL;
    196   }
    197   n = nObjs * objSize;
    198   if (objSize <= 0 || nObjs < 0 || nObjs >= INT_MAX / objSize) {
     216  return gmallocn(nObjs, objSize, true);
     217}
     218
     219inline static void *gmallocn3(int a, int b, int c, bool checkoverflow) GMEM_EXCEP {
     220  int n = a * b;
     221  if (b <= 0 || a < 0 || a >= INT_MAX / b) {
    199222#if USE_EXCEPTIONS
    200223    throw GMemException();
    201224#else
    202225    fprintf(stderr, "Bogus memory allocation size\n");
    203     return NULL;
    204 #endif
    205   }
    206   return gmalloc(n);
    207 }
    208 
    209 void *greallocn(void *p, int nObjs, int objSize) GMEM_EXCEP {
     226    if (checkoverflow) return NULL;
     227    else exit(1);
     228#endif
     229  }
     230  return gmallocn(n, c, checkoverflow);
     231}
     232
     233void *gmallocn3(int a, int b, int c) GMEM_EXCEP {
     234  return gmallocn3(a, b, c, false);
     235}
     236
     237void *gmallocn3_checkoverflow(int a, int b, int c) GMEM_EXCEP {
     238  return gmallocn3(a, b, c, true);
     239}
     240
     241inline static void *greallocn(void *p, int nObjs, int objSize, bool checkoverflow) GMEM_EXCEP {
    210242  int n;
    211243
     
    222254#else
    223255    fprintf(stderr, "Bogus memory allocation size\n");
    224     exit(1);
    225 #endif
    226   }
    227   return grealloc(p, n);
     256    if (checkoverflow) return NULL;
     257    else exit(1);
     258#endif
     259  }
     260  return grealloc(p, n, checkoverflow);
     261}
     262
     263void *greallocn(void *p, int nObjs, int objSize) GMEM_EXCEP {
     264  return greallocn(p, nObjs, objSize, false);
    228265}
    229266
    230267void *greallocn_checkoverflow(void *p, int nObjs, int objSize) GMEM_EXCEP {
    231   int n;
    232 
    233   if (nObjs == 0) {
    234     if (p) {
    235       gfree(p);
    236     }
    237     return NULL;
    238   }
    239   n = nObjs * objSize;
    240   if (objSize <= 0 || nObjs < 0 || nObjs >= INT_MAX / objSize) {
    241 #if USE_EXCEPTIONS
    242     throw GMemException();
    243 #else
    244     fprintf(stderr, "Bogus memory allocation size\n");
    245     return NULL;
    246 #endif
    247   }
    248   return grealloc(p, n);
     268  return greallocn(p, nObjs, objSize, true);
    249269}
    250270
Note: See TracChangeset for help on using the changeset viewer.