aboutsummaryrefslogtreecommitdiff
path: root/project/dclib/dclib-debug.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--project/dclib/dclib-debug.c141
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 ///////////////