X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=blobdiff_plain;f=pdf2swf%2Fxpdf%2FGHash.cc;h=b51a7643029f5555d83b932375225c01e5254a5c;hp=1dd0e26c2497edfb00213b2d468caa49c4af72f5;hb=85c46a8011c7fd5e4bda282266006c972ea7606b;hpb=b0d012f83219d898e9cd92281d9996bc9ff13b5f diff --git a/pdf2swf/xpdf/GHash.cc b/pdf2swf/xpdf/GHash.cc index 1dd0e26..b51a764 100644 --- a/pdf2swf/xpdf/GHash.cc +++ b/pdf2swf/xpdf/GHash.cc @@ -39,7 +39,7 @@ GHash::GHash(GBool deleteKeysA) { deleteKeys = deleteKeysA; size = 7; - tab = (GHashBucket **)gmalloc(size * sizeof(GHashBucket *)); + tab = (GHashBucket **)gmallocn(size, sizeof(GHashBucket *)); for (h = 0; h < size; ++h) { tab[h] = NULL; } @@ -101,6 +101,30 @@ void GHash::add(GString *key, int val) { ++len; } +void GHash::replace(GString *key, void *val) { + GHashBucket *p; + int h; + + if ((p = find(key, &h))) { + p->val.p = val; + delete key; + } else { + add(key, val); + } +} + +void GHash::replace(GString *key, int val) { + GHashBucket *p; + int h; + + if ((p = find(key, &h))) { + p->val.i = val; + delete key; + } else { + add(key, val); + } +} + void *GHash::lookup(GString *key) { GHashBucket *p; int h; @@ -292,7 +316,7 @@ void GHash::expand() { oldSize = size; oldTab = tab; size = 2*size + 1; - tab = (GHashBucket **)gmalloc(size * sizeof(GHashBucket *)); + tab = (GHashBucket **)gmallocn(size, sizeof(GHashBucket *)); for (h = 0; h < size; ++h) { tab[h] = NULL; }