亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pngmem.c

?? 支持各種柵格圖像和矢量圖像讀取的庫
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* pngmem.c - stub functions for memory allocation * * libpng version 1.2.8 - December 3, 2004 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2004 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) * * This file provides a location for all memory allocation.  Users who * need special memory handling are expected to supply replacement * functions for png_malloc() and png_free(), and to use * png_create_read_struct_2() and png_create_write_struct_2() to * identify the replacement functions. */#define PNG_INTERNAL#include "png.h"/* Borland DOS special memory handler */#if defined(__TURBOC__) && !defined(_Windows) && !defined(__FLAT__)/* if you change this, be sure to change the one in png.h also *//* Allocate memory for a png_struct.  The malloc and memset can be replaced   by a single call to calloc() if this is thought to improve performance. */png_voidp /* PRIVATE */png_create_struct(int type){#ifdef PNG_USER_MEM_SUPPORTED   return (png_create_struct_2(type, png_malloc_ptr_NULL, png_voidp_NULL));}/* Alternate version of png_create_struct, for use with user-defined malloc. */png_voidp /* PRIVATE */png_create_struct_2(int type, png_malloc_ptr malloc_fn, png_voidp mem_ptr){#endif /* PNG_USER_MEM_SUPPORTED */   png_size_t size;   png_voidp struct_ptr;   if (type == PNG_STRUCT_INFO)     size = png_sizeof(png_info);   else if (type == PNG_STRUCT_PNG)     size = png_sizeof(png_struct);   else     return (png_get_copyright(NULL));#ifdef PNG_USER_MEM_SUPPORTED   if(malloc_fn != NULL)   {      png_struct dummy_struct;      png_structp png_ptr = &dummy_struct;      png_ptr->mem_ptr=mem_ptr;      struct_ptr = (*(malloc_fn))(png_ptr, (png_uint_32)size);   }   else#endif /* PNG_USER_MEM_SUPPORTED */      struct_ptr = (png_voidp)farmalloc(size);   if (struct_ptr != NULL)      png_memset(struct_ptr, 0, size);   return (struct_ptr);}/* Free memory allocated by a png_create_struct() call */void /* PRIVATE */png_destroy_struct(png_voidp struct_ptr){#ifdef PNG_USER_MEM_SUPPORTED   png_destroy_struct_2(struct_ptr, png_free_ptr_NULL, png_voidp_NULL);}/* Free memory allocated by a png_create_struct() call */void /* PRIVATE */png_destroy_struct_2(png_voidp struct_ptr, png_free_ptr free_fn,    png_voidp mem_ptr){#endif   if (struct_ptr != NULL)   {#ifdef PNG_USER_MEM_SUPPORTED      if(free_fn != NULL)      {         png_struct dummy_struct;         png_structp png_ptr = &dummy_struct;         png_ptr->mem_ptr=mem_ptr;         (*(free_fn))(png_ptr, struct_ptr);         return;      }#endif /* PNG_USER_MEM_SUPPORTED */      farfree (struct_ptr);   }}/* Allocate memory.  For reasonable files, size should never exceed * 64K.  However, zlib may allocate more then 64K if you don't tell * it not to.  See zconf.h and png.h for more information. zlib does * need to allocate exactly 64K, so whatever you call here must * have the ability to do that. * * Borland seems to have a problem in DOS mode for exactly 64K. * It gives you a segment with an offset of 8 (perhaps to store its * memory stuff).  zlib doesn't like this at all, so we have to * detect and deal with it.  This code should not be needed in * Windows or OS/2 modes, and only in 16 bit mode.  This code has * been updated by Alexander Lehmann for version 0.89 to waste less * memory. * * Note that we can't use png_size_t for the "size" declaration, * since on some systems a png_size_t is a 16-bit quantity, and as a * result, we would be truncating potentially larger memory requests * (which should cause a fatal error) and introducing major problems. */png_voidp PNGAPIpng_malloc(png_structp png_ptr, png_uint_32 size){   png_voidp ret;   if (png_ptr == NULL || size == 0)      return (NULL);#ifdef PNG_USER_MEM_SUPPORTED   if(png_ptr->malloc_fn != NULL)       ret = ((png_voidp)(*(png_ptr->malloc_fn))(png_ptr, (png_size_t)size));   else       ret = (png_malloc_default(png_ptr, size));   if (ret == NULL && (png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)       png_error(png_ptr, "Out of memory!");   return (ret);}png_voidp PNGAPIpng_malloc_default(png_structp png_ptr, png_uint_32 size){   png_voidp ret;#endif /* PNG_USER_MEM_SUPPORTED */#ifdef PNG_MAX_MALLOC_64K   if (size > (png_uint_32)65536L)   {      png_warning(png_ptr, "Cannot Allocate > 64K");      ret = NULL;   }   else#endif   if (size != (size_t)size)     ret = NULL;   else if (size == (png_uint_32)65536L)   {      if (png_ptr->offset_table == NULL)      {         /* try to see if we need to do any of this fancy stuff */         ret = farmalloc(size);         if (ret == NULL || ((png_size_t)ret & 0xffff))         {            int num_blocks;            png_uint_32 total_size;            png_bytep table;            int i;            png_byte huge * hptr;            if (ret != NULL)            {               farfree(ret);               ret = NULL;            }            if(png_ptr->zlib_window_bits > 14)               num_blocks = (int)(1 << (png_ptr->zlib_window_bits - 14));            else               num_blocks = 1;            if (png_ptr->zlib_mem_level >= 7)               num_blocks += (int)(1 << (png_ptr->zlib_mem_level - 7));            else               num_blocks++;            total_size = ((png_uint_32)65536L) * (png_uint_32)num_blocks+16;            table = farmalloc(total_size);            if (table == NULL)            {#ifndef PNG_USER_MEM_SUPPORTED               if ((png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)                  png_error(png_ptr, "Out Of Memory."); /* Note "O" and "M" */               else                  png_warning(png_ptr, "Out Of Memory.");#endif               return (NULL);            }            if ((png_size_t)table & 0xfff0)            {#ifndef PNG_USER_MEM_SUPPORTED               if ((png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)                  png_error(png_ptr,                    "Farmalloc didn't return normalized pointer");               else                  png_warning(png_ptr,                    "Farmalloc didn't return normalized pointer");#endif               return (NULL);            }            png_ptr->offset_table = table;            png_ptr->offset_table_ptr = farmalloc(num_blocks *               png_sizeof (png_bytep));            if (png_ptr->offset_table_ptr == NULL)            {#ifndef PNG_USER_MEM_SUPPORTED               if ((png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)                  png_error(png_ptr, "Out Of memory."); /* Note "O" and "M" */               else                  png_warning(png_ptr, "Out Of memory.");#endif               return (NULL);            }            hptr = (png_byte huge *)table;            if ((png_size_t)hptr & 0xf)            {               hptr = (png_byte huge *)((long)(hptr) & 0xfffffff0L);               hptr = hptr + 16L;  /* "hptr += 16L" fails on Turbo C++ 3.0 */            }            for (i = 0; i < num_blocks; i++)            {               png_ptr->offset_table_ptr[i] = (png_bytep)hptr;               hptr = hptr + (png_uint_32)65536L;  /* "+=" fails on TC++3.0 */            }            png_ptr->offset_table_number = num_blocks;            png_ptr->offset_table_count = 0;            png_ptr->offset_table_count_free = 0;         }      }      if (png_ptr->offset_table_count >= png_ptr->offset_table_number)      {#ifndef PNG_USER_MEM_SUPPORTED         if ((png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)            png_error(png_ptr, "Out of Memory."); /* Note "o" and "M" */         else            png_warning(png_ptr, "Out of Memory.");#endif         return (NULL);      }      ret = png_ptr->offset_table_ptr[png_ptr->offset_table_count++];   }   else      ret = farmalloc(size);#ifndef PNG_USER_MEM_SUPPORTED   if (ret == NULL)   {      if ((png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)         png_error(png_ptr, "Out of memory."); /* Note "o" and "m" */      else         png_warning(png_ptr, "Out of memory."); /* Note "o" and "m" */   }#endif   return (ret);}/* free a pointer allocated by png_malloc().  In the default   configuration, png_ptr is not used, but is passed in case it   is needed.  If ptr is NULL, return without taking any action. */void PNGAPIpng_free(png_structp png_ptr, png_voidp ptr){   if (png_ptr == NULL || ptr == NULL)      return;#ifdef PNG_USER_MEM_SUPPORTED   if (png_ptr->free_fn != NULL)   {      (*(png_ptr->free_fn))(png_ptr, ptr);      return;   }   else png_free_default(png_ptr, ptr);}void PNGAPIpng_free_default(png_structp png_ptr, png_voidp ptr){#endif /* PNG_USER_MEM_SUPPORTED */   if (png_ptr->offset_table != NULL)   {      int i;      for (i = 0; i < png_ptr->offset_table_count; i++)      {         if (ptr == png_ptr->offset_table_ptr[i])         {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三区免费| 欧美极品aⅴ影院| 国产免费成人在线视频| 亚洲一区二区在线免费观看视频| 日本美女一区二区三区| 色婷婷av一区二区三区gif | 三级亚洲高清视频| 成人免费av在线| 日韩一级二级三级精品视频| 亚洲你懂的在线视频| 国产精品888| 日韩视频免费直播| 亚洲一区二区三区自拍| aaa亚洲精品一二三区| 精品欧美黑人一区二区三区| 亚洲不卡在线观看| 欧美亚洲国产一区在线观看网站| 国产色综合久久| 国产乱子伦视频一区二区三区| 欧美日韩一区二区在线观看视频| 亚洲欧美在线另类| 国产在线不卡视频| 精品成人在线观看| 久久99热国产| 日韩一区二区三区视频| 午夜影院在线观看欧美| 欧美影片第一页| 亚洲美女视频一区| 色综合天天性综合| 亚洲色图都市小说| 91一区在线观看| 国产精品久久久一本精品 | 91蝌蚪porny| 中文字幕一区免费在线观看| 成人影视亚洲图片在线| 久久久久久久久伊人| 国产激情偷乱视频一区二区三区| 精品国产乱码久久久久久1区2区| 人妖欧美一区二区| 精品理论电影在线观看| 韩国欧美国产一区| 国产欧美一区二区精品婷婷| 成人久久18免费网站麻豆| 国产精品―色哟哟| 91首页免费视频| 亚洲伊人色欲综合网| 欧美日韩国产首页| 六月丁香婷婷色狠狠久久| 久久综合999| 9l国产精品久久久久麻豆| 亚洲激情自拍视频| 4438成人网| 国产精一区二区三区| 成人免费一区二区三区在线观看| 一本一道久久a久久精品| 亚洲成人黄色影院| 日韩欧美的一区二区| 福利一区福利二区| 夜夜嗨av一区二区三区中文字幕 | 日本欧美一区二区三区| 精品伦理精品一区| jizzjizzjizz欧美| 亚洲地区一二三色| 精品电影一区二区三区| 色偷偷久久人人79超碰人人澡 | 国产成人精品亚洲777人妖| 日本一二三不卡| 欧美亚洲愉拍一区二区| 蜜桃一区二区三区在线| 国产精品久久99| 欧美日韩在线观看一区二区| 蜜臀av一区二区在线观看| 中文字幕第一区综合| 337p亚洲精品色噜噜狠狠| 成人自拍视频在线| 婷婷成人综合网| 1024成人网| 精品捆绑美女sm三区| 91成人免费网站| 国产福利电影一区二区三区| 亚洲一卡二卡三卡四卡无卡久久 | 中文字幕一区二区三区四区不卡 | 91丨九色丨国产丨porny| 日本不卡在线视频| 一区二区在线看| 国产网红主播福利一区二区| 欧美精品日日鲁夜夜添| 99在线热播精品免费| 精品一区二区三区视频| 亚洲国产精品一区二区久久恐怖片 | 国产欧美一区二区精品婷婷| 日韩一级片在线观看| 欧美视频日韩视频| 成人一区二区视频| 国产一区二区三区综合| 天使萌一区二区三区免费观看| 亚洲视频一区在线| 国产调教视频一区| 欧美va亚洲va| 欧美一区二区三区精品| 欧美三级日韩在线| 日本韩国欧美在线| thepron国产精品| 国产乱对白刺激视频不卡| 美国精品在线观看| 视频在线观看一区| 丝袜a∨在线一区二区三区不卡| 伊人一区二区三区| 一区二区三区在线观看动漫| 亚洲欧洲无码一区二区三区| 中文字幕不卡在线观看| 久久网这里都是精品| www国产成人免费观看视频 深夜成人网| 色一区在线观看| 色999日韩国产欧美一区二区| 成人黄色av网站在线| 成人国产电影网| 不卡av在线网| 91在线小视频| 色呦呦网站一区| 欧美日韩一区二区欧美激情| 欧美图区在线视频| 欧美麻豆精品久久久久久| 欧美三级一区二区| 欧美一区二区三区四区高清 | 人人超碰91尤物精品国产| 亚洲第一在线综合网站| 日本不卡高清视频| 韩日av一区二区| 丰满亚洲少妇av| 一本一道久久a久久精品| 欧美色电影在线| 日韩欧美电影一二三| 国产人久久人人人人爽| 国产欧美视频一区二区三区| 中文字幕中文乱码欧美一区二区 | 国产精品人妖ts系列视频| 国产精品色一区二区三区| 一个色在线综合| 久久精品二区亚洲w码| 成人午夜短视频| 91福利精品第一导航| 欧美一区二区二区| 欧美激情一区二区在线| 一区二区国产视频| 精品一区二区三区在线视频| 成人黄动漫网站免费app| 欧美综合一区二区三区| 日韩欧美精品在线| 亚洲欧美综合网| 麻豆精品在线视频| 99视频一区二区三区| 欧美色视频在线| 国产蜜臀97一区二区三区| 亚洲一区二区三区四区在线观看 | 国产成人亚洲综合a∨婷婷| 一本大道av一区二区在线播放| 91精品国产色综合久久不卡电影| 久久久久久久久久久久久久久99 | 亚洲综合色自拍一区| 国产一区二区三区在线观看精品| 91久久精品日日躁夜夜躁欧美| 精品国产乱码久久久久久浪潮| 最新中文字幕一区二区三区| 毛片不卡一区二区| 91同城在线观看| 久久免费午夜影院| 天天影视涩香欲综合网| 91麻豆国产自产在线观看| 精品国产人成亚洲区| 亚洲一区国产视频| 99久久国产综合色|国产精品| 91精品国产色综合久久久蜜香臀| 亚洲乱码中文字幕综合| 国产成人午夜99999| 5566中文字幕一区二区电影| 亚洲精品国产高清久久伦理二区| 国产一区二区h| 欧美一级一级性生活免费录像| 亚洲女与黑人做爰| 成人性生交大片| 久久九九久久九九| 蜜臀av一区二区在线免费观看 | 中文字幕中文字幕一区二区| 精品一区二区免费| 欧美一区二区免费视频| 亚洲在线观看免费| 色婷婷久久久久swag精品| 日韩一区中文字幕| 成人午夜视频在线观看| 久久婷婷成人综合色| 麻豆成人久久精品二区三区小说| 欧美日韩另类国产亚洲欧美一级| 亚洲三级小视频| 91蜜桃免费观看视频| 综合久久一区二区三区| 91在线精品秘密一区二区| 国产精品久久看| 色94色欧美sute亚洲线路二| 亚洲欧美日韩国产综合|