diff options
Diffstat (limited to '')
| -rw-r--r-- | project/dclib/dclib-debug.c | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/project/dclib/dclib-debug.c b/project/dclib/dclib-debug.c index 9dfbd5e..7017608 100644 --- a/project/dclib/dclib-debug.c +++ b/project/dclib/dclib-debug.c @@ -1019,6 +1019,52 @@ void * dclib_memdup ( MPARAM const void * src, size_t copylen ) /////////////////////////////////////////////////////////////////////////////// +void * dclib_memdup2 ( MPARAM cvp src1, size_t len1, cvp src2, size_t len2 ) +{ + char *res = dclib_malloc( MCALL len1+len2+1); + char *dest = res; + if (len1) + { + memcpy(dest,src1,len1); + dest += len1; + } + if (len2) + { + memcpy(dest,src2,len2); + dest += len2; + } + *dest = 0; + return res; +} + +/////////////////////////////////////////////////////////////////////////////// + +void * dclib_memdup3 + ( MPARAM cvp src1, size_t len1, cvp src2, size_t len2, cvp src3, size_t len3 ) +{ + char *res = dclib_malloc( MCALL len1+len2+len3+1); + char *dest = res; + if (len1) + { + memcpy(dest,src1,len1); + dest += len1; + } + if (len2) + { + memcpy(dest,src2,len2); + dest += len2; + } + if (len3) + { + memcpy(dest,src3,len3); + dest += len3; + } + *dest = 0; + return res; +} + +/////////////////////////////////////////////////////////////////////////////// + void * dclib_allocdup ( MPARAM const void * src, size_t copylen ) { char * dest = dclib_malloc( MCALL copylen); @@ -1026,6 +1072,29 @@ void * dclib_allocdup ( MPARAM const void * src, size_t copylen ) return dest; } +/////////////////////////////////////////////////////////////////////////////// + +char * dclib_printdup ( MPARAM ccp format, ... ) +{ + char buf[2000]; + + va_list arg; + va_start(arg,format); + const int stat = vsnprintf(buf,sizeof(buf),format,arg) + 1; + va_end(arg); + + char * dest = dclib_malloc( MCALL stat ); + if ( stat <= sizeof(buf) ) + memcpy(dest,buf,stat); + else + { + va_start(arg,format); + vsnprintf(dest,stat,format,arg); + va_end(arg); + } + return dest; +} + // /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// @@ -1511,6 +1580,54 @@ void * trace_memdup /////////////////////////////////////////////////////////////////////////////// +void * trace_memdup2 ( ccp func, ccp file, uint line, + cvp src1, size_t len1, cvp src2, size_t len2 ) +{ + char *res = trace_malloc(func,file,line,len1+len2+1); + char *dest = res; + + if (len1) + { + memcpy(dest,src1,len1); + dest += len1; + } + if (len2) + { + memcpy(dest,src2,len2); + dest += len2; + } + *dest = 0; + return res; +} + +/////////////////////////////////////////////////////////////////////////////// + +void * trace_memdup3 ( ccp func, ccp file, uint line, + cvp src1, size_t len1, cvp src2, size_t len2, cvp src3, size_t len3 ) +{ + char *res = trace_malloc(func,file,line,len1+len2+len3+1); + char *dest = res; + if (len1) + { + memcpy(dest,src1,len1); + dest += len1; + } + if (len2) + { + memcpy(dest,src2,len2); + dest += len2; + } + if (len3) + { + memcpy(dest,src3,len3); + dest += len3; + } + *dest = 0; + return res; +} + +/////////////////////////////////////////////////////////////////////////////// + void * trace_allocdup ( ccp func, ccp file, uint line, const void * src, size_t copylen ) { @@ -1519,6 +1636,30 @@ void * trace_allocdup return dest; } +/////////////////////////////////////////////////////////////////////////////// + +char * trace_printdup + ( ccp func, ccp file, uint line, ccp format, ... ) +{ + char buf[2000]; + + va_list arg; + va_start(arg,format); + const int stat = vsnprintf(buf,sizeof(buf),format,arg) + 1; + va_end(arg); + + char * dest = trace_malloc(func,file,line,stat); + if ( stat <= sizeof(buf) ) + memcpy(dest,buf,stat); + else + { + va_start(arg,format); + vsnprintf(dest,stat,format,arg); + va_end(arg); + } + return dest; +} + // /////////////////////////////////////////////////////////////////////////////// /////////////// mem check /////////////// |
