137fe158a8611dd11ec0253ab1552399b780988dcGloria Wang/************************************************************************ 22da723a953a18e3c7fec194cec1216cf31130c86Gloria Wang * Copyright (C) 2002-2009, Xiph.org Foundation 32da723a953a18e3c7fec194cec1216cf31130c86Gloria Wang * Copyright (C) 2010, Robin Watts for Pinknoise Productions Ltd 437fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * All rights reserved. 537fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * 637fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * Redistribution and use in source and binary forms, with or without 72da723a953a18e3c7fec194cec1216cf31130c86Gloria Wang * modification, are permitted provided that the following conditions 82da723a953a18e3c7fec194cec1216cf31130c86Gloria Wang * are met: 937fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * 1037fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * * Redistributions of source code must retain the above copyright 1137fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * notice, this list of conditions and the following disclaimer. 1237fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * * Redistributions in binary form must reproduce the above 1337fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * copyright notice, this list of conditions and the following disclaimer 1437fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * in the documentation and/or other materials provided with the 1537fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * distribution. 162da723a953a18e3c7fec194cec1216cf31130c86Gloria Wang * * Neither the names of the Xiph.org Foundation nor Pinknoise 172da723a953a18e3c7fec194cec1216cf31130c86Gloria Wang * Productions Ltd nor the names of its contributors may be used to 182da723a953a18e3c7fec194cec1216cf31130c86Gloria Wang * endorse or promote products derived from this software without 192da723a953a18e3c7fec194cec1216cf31130c86Gloria Wang * specific prior written permission. 2037fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * 2137fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 2237fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 2337fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 2437fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2537fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2637fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2737fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2837fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2937fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 3037fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 3137fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3237fe158a8611dd11ec0253ab1552399b780988dcGloria Wang ************************************************************************/ 337913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 347913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#define HEAD_ALIGN 64 357913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#include <stdlib.h> 367913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#include <string.h> 377913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#include <stdio.h> 387913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#define MISC_C 397913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#include "misc.h" 407913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang//#include <sys/time.h> 417913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 427913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wangstatic void **pointers=NULL; 437913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wangstatic long *insertlist=NULL; /* We can't embed this in the pointer list; 447913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang a pointer can have any value... */ 457913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 467913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wangstatic char **files=NULL; 477913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wangstatic long *file_bytes=NULL; 487913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wangstatic int filecount=0; 497913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 507913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wangstatic int ptop=0; 517913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wangstatic int palloced=0; 527913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wangstatic int pinsert=0; 537913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 547913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wangtypedef struct { 557913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang char *file; 567913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang long line; 577913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang long ptr; 587913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang long bytes; 597913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang} head; 607913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 617913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wanglong global_bytes=0; 627913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wanglong start_time=-1; 637913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 647913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wangstatic void *_insert(void *ptr,long bytes,char *file,long line){ 657913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang ((head *)ptr)->file=file; 667913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang ((head *)ptr)->line=line; 677913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang ((head *)ptr)->ptr=pinsert; 687913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang ((head *)ptr)->bytes=bytes-HEAD_ALIGN; 697913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 707913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang if(pinsert>=palloced){ 717913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang palloced+=64; 727913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang if(pointers){ 737913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang pointers=(void **)realloc(pointers,sizeof(void **)*palloced); 747913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang insertlist=(long *)realloc(insertlist,sizeof(long *)*palloced); 757913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang }else{ 767913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang pointers=(void **)malloc(sizeof(void **)*palloced); 777913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang insertlist=(long *)malloc(sizeof(long *)*palloced); 787913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang } 797913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang } 807913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 817913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang pointers[pinsert]=ptr; 827913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 837913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang if(pinsert==ptop) 847913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang pinsert=++ptop; 857913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang else 867913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang pinsert=insertlist[pinsert]; 877913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 887913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#ifdef _VDBG_GRAPHFILE 897913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang { 907913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang FILE *out; 917913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang struct timeval tv; 927913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang static struct timezone tz; 937913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang int i; 947913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang char buffer[80]; 957913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang gettimeofday(&tv,&tz); 967913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 977913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang for(i=0;i<filecount;i++) 987913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang if(!strcmp(file,files[i]))break; 997913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 1007913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang if(i==filecount){ 1017913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang filecount++; 1027913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang if(!files){ 1037913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang files=malloc(filecount*sizeof(*files)); 1047913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang file_bytes=malloc(filecount*sizeof(*file_bytes)); 1057913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang }else{ 1067913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang files=realloc(files,filecount*sizeof(*files)); 1077913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang file_bytes=realloc(file_bytes,filecount*sizeof(*file_bytes)); 1087913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang } 1097913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang files[i]=strdup(file); 1107913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang file_bytes[i]=0; 1117913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang } 1127913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 1137913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang file_bytes[i]+=bytes-HEAD_ALIGN; 1147913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 1157913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang if(start_time==-1)start_time=(tv.tv_sec*1000)+(tv.tv_usec/1000); 1167913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 1177913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang snprintf(buffer,80,"%s",file); 1187913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang if(strchr(buffer,'.'))strchr(buffer,'.')[0]=0; 1197913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang strcat(buffer,_VDBG_GRAPHFILE); 1207913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang out=fopen(buffer,"a"); 1217913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang fprintf(out,"%ld, %ld\n",-start_time+(tv.tv_sec*1000)+(tv.tv_usec/1000), 1227913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang file_bytes[i]-(bytes-HEAD_ALIGN)); 1237913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang fprintf(out,"%ld, %ld # FILE %s LINE %ld\n", 1247913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang -start_time+(tv.tv_sec*1000)+(tv.tv_usec/1000), 1257913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang file_bytes[i],file,line); 1267913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang fclose(out); 1277913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 1287913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang out=fopen("total"_VDBG_GRAPHFILE,"a"); 1297913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang fprintf(out,"%ld, %ld\n",-start_time+(tv.tv_sec*1000)+(tv.tv_usec/1000), 1307913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang global_bytes); 1317913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang fprintf(out,"%ld, %ld\n",-start_time+(tv.tv_sec*1000)+(tv.tv_usec/1000), 1327913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang global_bytes+(bytes-HEAD_ALIGN)); 1337913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang fclose(out); 1347913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang } 1357913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#endif 1367913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 1377913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang global_bytes+=(bytes-HEAD_ALIGN); 1387913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 1397913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang return(void *)(((char *)ptr)+HEAD_ALIGN); 1407913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang} 1417913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 1427913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wangstatic void _ripremove(void *ptr){ 1437913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang int insert; 1447913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 1457913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#ifdef _VDBG_GRAPHFILE 1467913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang { 1477913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang FILE *out=fopen("total"_VDBG_GRAPHFILE,"a"); 1487913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang struct timeval tv; 1497913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang static struct timezone tz; 1507913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang char buffer[80]; 1517913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang char *file =((head *)ptr)->file; 1527913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang long bytes =((head *)ptr)->bytes; 1537913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang int i; 1547913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 1557913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang gettimeofday(&tv,&tz); 1567913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang fprintf(out,"%ld, %ld\n",-start_time+(tv.tv_sec*1000)+(tv.tv_usec/1000), 1577913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang global_bytes); 1587913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang fprintf(out,"%ld, %ld\n",-start_time+(tv.tv_sec*1000)+(tv.tv_usec/1000), 1597913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang global_bytes-((head *)ptr)->bytes); 1607913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang fclose(out); 1617913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 1627913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang for(i=0;i<filecount;i++) 1637913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang if(!strcmp(file,files[i]))break; 1647913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 1657913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang snprintf(buffer,80,"%s",file); 1667913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang if(strchr(buffer,'.'))strchr(buffer,'.')[0]=0; 1677913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang strcat(buffer,_VDBG_GRAPHFILE); 1687913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang out=fopen(buffer,"a"); 1697913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang fprintf(out,"%ld, %ld\n",-start_time+(tv.tv_sec*1000)+(tv.tv_usec/1000), 1707913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang file_bytes[i]); 1717913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang fprintf(out,"%ld, %ld\n",-start_time+(tv.tv_sec*1000)+(tv.tv_usec/1000), 1727913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang file_bytes[i]-bytes); 1737913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang fclose(out); 1747913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 1757913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang file_bytes[i]-=bytes; 1767913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 1777913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang } 1787913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#endif 1797913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 1807913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang global_bytes-=((head *)ptr)->bytes; 1817913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 1827913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang insert=((head *)ptr)->ptr; 1837913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang insertlist[insert]=pinsert; 1847913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang pinsert=insert; 1857913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 1867913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang if(pointers[insert]==NULL){ 1877913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang fprintf(stderr,"DEBUGGING MALLOC ERROR: freeing previously freed memory\n"); 1887913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang fprintf(stderr,"\t%s %ld\n",((head *)ptr)->file,((head *)ptr)->line); 1897913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang } 1907913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 1917913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang if(global_bytes<0){ 1927913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang fprintf(stderr,"DEBUGGING MALLOC ERROR: freeing unmalloced memory\n"); 1937913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang } 1947913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 1957913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang pointers[insert]=NULL; 1967913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang} 1977913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 1987913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wangvoid _VDBG_dump(void){ 1997913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang int i; 2007913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang for(i=0;i<ptop;i++){ 2017913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang head *ptr=pointers[i]; 2027913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang if(ptr) 2037913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang fprintf(stderr,"unfreed bytes from %s:%ld\n", 2047913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang ptr->file,ptr->line); 2057913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang } 2067913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 2077913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang} 2087913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 2097913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wangextern void *_VDBG_malloc(void *ptr,long bytes,char *file,long line){ 2107913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang bytes+=HEAD_ALIGN; 2117913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang if(ptr){ 2127913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang ptr=(void *)(((char *)ptr)-HEAD_ALIGN); 2137913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang _ripremove(ptr); 2147913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang ptr=realloc(ptr,bytes); 2157913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang }else{ 2167913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang ptr=malloc(bytes); 2177913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang memset(ptr,0,bytes); 2187913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang } 2197913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang return _insert(ptr,bytes,file,line); 2207913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang} 2217913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 222946e1bc4a013eb501b65d344efff58a9ae4e247aGlenn Kastenextern void _VDBG_free(void *ptr){ 2237913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang if(ptr){ 2247913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang ptr=(void *)(((char *)ptr)-HEAD_ALIGN); 2257913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang _ripremove(ptr); 2267913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang free(ptr); 2277913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang } 2287913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang} 2297913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang 230