HANDLE_CHUNK_ALWAYS
PNG_HANDLE_CHUNK_ALWAYS
png_handle_unknown(png_structp png_ptr, png_infop info_ptr, png_uint_32 length){   png_uint_32 skip = 0;   png_debug(1, "in png_handle_unknown\n");   if (png_ptr->mode & PNG_HAVE_IDAT)   {#ifdef PNG_USE_LOCAL_ARRAYS      PNG_IDAT;#endif      if (png_memcmp(png_ptr->chunk_name, png_IDAT, 4))  /* not an IDAT */         png_ptr->mode |= PNG_AFTER_IDAT;   }   png_check_chunk_name(png_ptr, png_ptr->chunk_name);   if (!(png_ptr->chunk_name[0] & 0x20))   {#if defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED)      if(png_handle_as_unknown(png_ptr, png_ptr->chunk_name) !=           HANDLE_CHUNK_ALWAYS#if defined(PNG_READ_USER_CHUNKS_SUPPORTED)           && png_ptr->read_user_chunk_fn == NULL#endif        )#endif          png_chunk_error(png_ptr, "unknown critical chunk");   }#if defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED)   if (png_ptr->flags & PNG_FLAG_KEEP_UNKNOWN_CHUNKS)   {       png_unknown_chunk chunk;#ifdef PNG_MAX_MALLOC_64K       if (length > (png_uint_32)65535L)       {           png_warning(png_ptr, "unknown chunk too large to fit in memory");           skip = length - (png_uint_32)65535L;           length = (png_uint_32)65535L;       }#endif       png_strcpy((png_charp)chunk.name, (png_charp)png_ptr->chunk_name);       chunk.data = (png_bytep)png_malloc(png_ptr, length);       chunk.size = (png_size_t)length;       png_crc_read(png_ptr, (png_bytep)chunk.data, length);#if defined(PNG_READ_USER_CHUNKS_SUPPORTED)       if(png_ptr->read_user_chunk_fn != NULL)       {          /* callback to user unknown chunk handler */          if ((*(png_ptr->read_user_chunk_fn)) (png_ptr, &chunk) <= 0)          {             if (!(png_ptr->chunk_name[0] & 0x20))                if(png_handle_as_unknown(png_ptr, png_ptr->chunk_name) !=                     HANDLE_CHUNK_ALWAYS)                 {                   png_free(png_ptr, chunk.data);                   png_chunk_error(png_ptr, "unknown critical chunk");                 }             png_set_unknown_chunks(png_ptr, info_ptr, &chunk, 1);          }       }       else#endif          png_set_unknown_chunks(png_ptr, info_ptr, &chunk, 1);       png_free(png_ptr, chunk.data);   }   else#endif      skip = length;   png_crc_finish(png_ptr, skip);#if !defined(PNG_READ_USER_CHUNKS_SUPPORTED)   info_ptr = info_ptr; /* quiet compiler warnings about unused info_ptr */#endif}