]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
skip flush operation in case where op is NULL
authorDanielle Rozenblit <drozenblit@fb.com>
Thu, 8 Sep 2022 20:53:13 +0000 (13:53 -0700)
committerDanielle Rozenblit <drozenblit@fb.com>
Thu, 8 Sep 2022 20:53:13 +0000 (13:53 -0700)
lib/decompress/zstd_decompress.c

index 975522f4b87c6eca58f82532005b451ed68b1d64..3edb9e680fb33ff1b06bf2309ab62b196a44960e 100644 (file)
@@ -2177,23 +2177,24 @@ size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inB
                 break;
             }
         case zdss_flush:
-            {   size_t const toFlushSize = zds->outEnd - zds->outStart;
+            if (op != NULL) {
+                size_t const toFlushSize = zds->outEnd - zds->outStart;
                 size_t const flushedSize = ZSTD_limitCopy(op, (size_t)(oend-op), zds->outBuff + zds->outStart, toFlushSize);
 
-                op = op ? op + flushedSize : op;
+                op += flushedSize;
 
                 zds->outStart += flushedSize;
                 if (flushedSize == toFlushSize) {  /* flush completed */
                     zds->streamStage = zdss_read;
                     if ( (zds->outBuffSize < zds->fParams.frameContentSize)
-                      && (zds->outStart + zds->fParams.blockSizeMax > zds->outBuffSize) ) {
+                    && (zds->outStart + zds->fParams.blockSizeMax > zds->outBuffSize) ) {
                         DEBUGLOG(5, "restart filling outBuff from beginning (left:%i, needed:%u)",
                                 (int)(zds->outBuffSize - zds->outStart),
                                 (U32)zds->fParams.blockSizeMax);
                         zds->outStart = zds->outEnd = 0;
                     }
                     break;
-            }   }
+            }}
             /* cannot complete flush */
             someMoreWork = 0;
             break;