]> granicus.if.org Git - php/commitdiff
Better fix for #68601 for perf
authorRemi Collet <remi@php.net>
Wed, 17 Dec 2014 09:59:36 +0000 (10:59 +0100)
committerStanislav Malyshev <stas@php.net>
Mon, 6 Apr 2015 00:36:47 +0000 (17:36 -0700)
https://bitbucket.org/libgd/gd-libgd/commits/81e9a993f2893d651d225646378e3fd1b7465467

ext/gd/libgd/gd_gif_in.c

index 491e9422db0c9baf9b021958451e8cb0aab4b807..f41ec8460aa098eca5d7fba2a169655619f87772 100644 (file)
@@ -400,14 +400,14 @@ GetCode_(gdIOCtx *fd, CODE_STATIC_DATA *scd, int code_size, int flag, int *ZeroD
                scd->lastbit = (2+count)*8 ;
        }
 
-       ret = 0;
-       for (i = scd->curbit, j = 0; j < code_size; ++i, ++j)
-               if (i < CSD_BUF_SIZE * 8) {
+       if ((scd->curbit + code_size - 1) >= (CSD_BUF_SIZE * 8)) {
+               ret = -1;
+       } else {
+               ret = 0;
+               for (i = scd->curbit, j = 0; j < code_size; ++i, ++j) {
                        ret |= ((scd->buf[i / 8] & (1 << (i % 8))) != 0) << j;
-               } else {
-                       ret = -1;
-                       break;
                }
+       }
 
        scd->curbit += code_size;
        return ret;