LCOV - code coverage report
Current view: directory - modules/zlib/src - uncompr.c (source / functions) Found Hit Coverage
Test: app.info Lines: 20 0 0.0 %
Date: 2012-06-02 Functions: 1 0 0.0 %

       1                 : /* uncompr.c -- decompress a memory buffer
       2                 :  * Copyright (C) 1995-2003, 2010 Jean-loup Gailly.
       3                 :  * For conditions of distribution and use, see copyright notice in zlib.h
       4                 :  */
       5                 : 
       6                 : /* @(#) $Id$ */
       7                 : 
       8                 : #define ZLIB_INTERNAL
       9                 : #include "zlib.h"
      10                 : 
      11                 : /* ===========================================================================
      12                 :      Decompresses the source buffer into the destination buffer.  sourceLen is
      13                 :    the byte length of the source buffer. Upon entry, destLen is the total
      14                 :    size of the destination buffer, which must be large enough to hold the
      15                 :    entire uncompressed data. (The size of the uncompressed data must have
      16                 :    been saved previously by the compressor and transmitted to the decompressor
      17                 :    by some mechanism outside the scope of this compression library.)
      18                 :    Upon exit, destLen is the actual size of the compressed buffer.
      19                 : 
      20                 :      uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
      21                 :    enough memory, Z_BUF_ERROR if there was not enough room in the output
      22                 :    buffer, or Z_DATA_ERROR if the input data was corrupted.
      23                 : */
      24               0 : int ZEXPORT uncompress (dest, destLen, source, sourceLen)
      25                 :     Bytef *dest;
      26                 :     uLongf *destLen;
      27                 :     const Bytef *source;
      28                 :     uLong sourceLen;
      29                 : {
      30                 :     z_stream stream;
      31                 :     int err;
      32                 : 
      33               0 :     stream.next_in = (Bytef*)source;
      34               0 :     stream.avail_in = (uInt)sourceLen;
      35                 :     /* Check for source > 64K on 16-bit machine: */
      36               0 :     if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR;
      37                 : 
      38               0 :     stream.next_out = dest;
      39               0 :     stream.avail_out = (uInt)*destLen;
      40               0 :     if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR;
      41                 : 
      42               0 :     stream.zalloc = (alloc_func)0;
      43               0 :     stream.zfree = (free_func)0;
      44                 : 
      45               0 :     err = inflateInit(&stream);
      46               0 :     if (err != Z_OK) return err;
      47                 : 
      48               0 :     err = inflate(&stream, Z_FINISH);
      49               0 :     if (err != Z_STREAM_END) {
      50               0 :         inflateEnd(&stream);
      51               0 :         if (err == Z_NEED_DICT || (err == Z_BUF_ERROR && stream.avail_in == 0))
      52               0 :             return Z_DATA_ERROR;
      53               0 :         return err;
      54                 :     }
      55               0 :     *destLen = stream.total_out;
      56                 : 
      57               0 :     err = inflateEnd(&stream);
      58               0 :     return err;
      59                 : }

Generated by: LCOV version 1.7