Troy D. Hanson 10 年之前
父節點
當前提交
613d9251f7
共有 2 個文件被更改,包括 13 次插入8 次删除
  1. 4 4
      opt/bundle/include/utmm.h
  2. 9 4
      opt/bundle/src/utmm.c

+ 4 - 4
opt/bundle/include/utmm.h

@@ -43,10 +43,10 @@ typedef struct {
 } UT_mm;
 
 void *utmm_new(const UT_mm *mm, size_t n);
-void utmm_init(const UT_mm *mm, char *buf, size_t n);
-void utmm_fini(const UT_mm *mm, char *buf, size_t n);
-void utmm_clear(const UT_mm *mm, char *buf, size_t n);
-void utmm_copy(const UT_mm *mm, char *dst, char *src, size_t n);
+void utmm_init(const UT_mm *mm, void *buf, size_t n);
+void utmm_fini(const UT_mm *mm, void *buf, size_t n);
+void utmm_clear(const UT_mm *mm, void *buf, size_t n);
+void utmm_copy(const UT_mm *mm, void *dst, void *src, size_t n);
 
 /* convenient predefined mm */
 extern UT_mm* utmm_int;

+ 9 - 4
opt/bundle/src/utmm.c

@@ -35,7 +35,8 @@ void *utmm_new(const UT_mm *mm, size_t n) {
   fprintf(stderr,"oom"); exit(-1); 
 }
 
-void utmm_init(const UT_mm *mm, char *buf, size_t n) {
+void utmm_init(const UT_mm *mm, void *_buf, size_t n) {
+  char *buf = (char*)_buf;
   if (mm->init == NULL) {
     memset(buf,0,n*mm->sz);
     return;
@@ -46,7 +47,8 @@ void utmm_init(const UT_mm *mm, char *buf, size_t n) {
   }
 }
 
-void utmm_fini(const UT_mm *mm, char *buf, size_t n) {
+void utmm_fini(const UT_mm *mm, void *_buf, size_t n) {
+  char *buf = (char*)_buf;
   if (mm->fini == NULL) return;
   while(n--) {
     mm->fini(buf);
@@ -54,7 +56,8 @@ void utmm_fini(const UT_mm *mm, char *buf, size_t n) {
   }
 }
 
-void utmm_clear(const UT_mm *mm, char *buf, size_t n) {
+void utmm_clear(const UT_mm *mm, void *_buf, size_t n) {
+  char *buf = (char*)_buf;
   if (mm->clear == NULL) {
     memset(buf,0,n*mm->sz);
     return;
@@ -65,7 +68,9 @@ void utmm_clear(const UT_mm *mm, char *buf, size_t n) {
   }
 }
 
-void utmm_copy(const UT_mm *mm, char *dst, char *src, size_t n) {
+void utmm_copy(const UT_mm *mm, void *_dst, void *_src, size_t n) {
+  char *dst = (char*)_dst;
+  char *src = (char*)_src;
   if (mm->copy == NULL) {
     memcpy(dst,src,n*mm->sz);
     return;