亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
国产精品电影院| 五月婷婷另类国产| 偷拍与自拍一区| 国产成人av电影在线播放| 欧美日韩欧美一区二区| 国产欧美日韩亚州综合 | 在线综合亚洲欧美在线视频| 26uuuu精品一区二区| 亚洲一级二级三级| jlzzjlzz国产精品久久| 日韩欧美精品在线视频| 亚洲午夜一区二区| 99re66热这里只有精品3直播 | 免费的成人av| 一本色道久久综合亚洲91| 国产色产综合产在线视频| 日本麻豆一区二区三区视频| 在线观看亚洲精品视频| 国产精品国产三级国产普通话蜜臀 | 日韩视频123| 婷婷丁香激情综合| 欧美亚洲精品一区| 亚洲精品国产一区二区精华液 | 婷婷激情综合网| 色哟哟欧美精品| 日本一区二区三区免费乱视频| 大白屁股一区二区视频| 欧美日韩精品一区二区天天拍小说 | 欧美大片顶级少妇| 日本 国产 欧美色综合| 欧美一区二区三区影视| 亚洲成av人片在线| 欧美男生操女生| 久久se这里有精品| 91精品国产色综合久久ai换脸| 亚洲国产成人高清精品| 欧美三级电影一区| 天天影视色香欲综合网老头| 777欧美精品| 奇米亚洲午夜久久精品| 欧美一区二区三区系列电影| 日韩不卡在线观看日韩不卡视频| 欧美色中文字幕| 天堂久久久久va久久久久| 欧美日韩亚洲国产综合| 看国产成人h片视频| 欧美成人aa大片| 国产精品自拍网站| 亚洲天堂网中文字| 欧美午夜免费电影| 日韩一区欧美二区| 26uuu国产一区二区三区| 国产成人福利片| 亚洲欧美日韩人成在线播放| 欧美少妇bbb| 老鸭窝一区二区久久精品| 久久久久久久久久久久电影| 成人爱爱电影网址| 午夜精品123| 久久蜜桃香蕉精品一区二区三区| 成人污视频在线观看| 夜夜爽夜夜爽精品视频| 精品电影一区二区| av亚洲产国偷v产偷v自拍| 亚洲国产欧美日韩另类综合| 日韩精品中午字幕| 99re热视频精品| 蜜臀va亚洲va欧美va天堂| 国产农村妇女毛片精品久久麻豆 | 亚洲人123区| 91精品国产91久久综合桃花| 国产一区二区三区日韩 | 国产资源在线一区| 亚洲欧美aⅴ...| 日韩一区二区在线观看视频播放| 丁香另类激情小说| 亚洲成人午夜影院| 日本一区二区视频在线| 51精品视频一区二区三区| 波波电影院一区二区三区| 五月天激情综合| 国产精品国产三级国产普通话三级 | 亚洲品质自拍视频| 中文字幕av一区二区三区| 4438亚洲最大| 亚洲欧美影音先锋| 成人综合在线网站| 精品国精品自拍自在线| 日韩中文字幕亚洲一区二区va在线| 欧美福利视频导航| 日韩免费看网站| 亚洲最色的网站| 成人夜色视频网站在线观看| 亚洲精品在线免费观看视频| 日本少妇一区二区| 欧美亚洲高清一区| 亚洲电影视频在线| 成人伦理片在线| 欧美日韩久久一区二区| 精品欧美乱码久久久久久1区2区| 国产欧美日韩不卡免费| 亚洲欧美日韩系列| 麻豆精品蜜桃视频网站| 在线不卡a资源高清| 欧美aaa在线| 国产亚洲va综合人人澡精品 | 成人免费视频视频在线观看免费| 日韩一区二区三区在线观看| 久久99国产精品久久99| 91精品欧美福利在线观看| 色综合久久久久久久久| 精品欧美一区二区三区精品久久| 国产一区二区三区国产| 麻豆精品在线视频| 男人的天堂久久精品| 亚洲成av人片在线| 亚洲1区2区3区4区| 午夜精品123| 青青草原综合久久大伊人精品| 亚洲国产精品麻豆| 亚洲chinese男男1069| 亚洲成人动漫av| 免费亚洲电影在线| 激情综合色播激情啊| 国产91对白在线观看九色| 国产一区二区剧情av在线| 懂色av中文字幕一区二区三区| 国产成人精品一区二| 成人三级伦理片| 在线观看网站黄不卡| 欧美高清视频一二三区| 欧美成人猛片aaaaaaa| xfplay精品久久| 日本一区二区免费在线观看视频 | 天天影视涩香欲综合网| 日本三级韩国三级欧美三级| 久久黄色级2电影| 国产一区二区三区av电影| 北条麻妃一区二区三区| 欧美影院精品一区| 91精品久久久久久久久99蜜臂| 日韩欧美激情在线| 国产欧美精品一区| 亚洲欧美日韩中文字幕一区二区三区| 亚洲另类在线制服丝袜| 日韩影院精彩在线| 成人国产精品免费网站| 欧美日韩一级片在线观看| 精品免费日韩av| 日韩理论电影院| 久久国产精品99久久久久久老狼| 国产一区在线观看视频| 色视频一区二区| 久久一二三国产| 亚洲手机成人高清视频| 麻豆免费看一区二区三区| 99久久久免费精品国产一区二区| 欧美日韩国产大片| 中文字幕一区日韩精品欧美| 奇米在线7777在线精品| 成人av网在线| 日韩三级视频在线看| 夜夜嗨av一区二区三区| 国产精品一级在线| 欧美美女一区二区三区| 国产精品免费视频网站| 久久99久久久久| 色婷婷av一区二区| 国产视频不卡一区| 日韩精品电影在线| 东方aⅴ免费观看久久av| 日韩一区二区在线观看| 国产精品二区一区二区aⅴ污介绍| 亚洲妇熟xx妇色黄| 国产一区视频在线看| 欧美视频一二三区| 久久美女高清视频| 中文欧美字幕免费| 久久99久久久久久久久久久| 91黄色免费看| 久久久久久久国产精品影院| 麻豆久久久久久| 在线一区二区三区四区| 久久免费的精品国产v∧| 亚洲高清久久久| 欧美亚洲丝袜传媒另类| 国产精品拍天天在线| 麻豆精品在线看| 日韩午夜中文字幕| 夜夜精品视频一区二区| 99久久综合99久久综合网站| 欧美精品一卡二卡| 午夜精品成人在线| 色婷婷久久一区二区三区麻豆| 国产欧美一区二区三区在线看蜜臀| 紧缚捆绑精品一区二区| 911国产精品| 亚洲a一区二区| 91小视频免费看| 悠悠色在线精品|