+@@ -320,7 +327,13 @@
+ if (code >= mapLen) {
+ oldLen = mapLen;
+ mapLen = (code + 256) & ~255;
++ Unicode *oldmap;
+ map = (Unicode *)greallocn(map, mapLen, sizeof(Unicode));
++ if(!map) {
++ /* we sometimes get overflows for files trying to use 0xffffffff as charcode */
++ map = oldmap;
++ return;
++ }
+ for (i = oldLen; i < mapLen; ++i) {
+ map[i] = 0;
+ }