Ticket #281: mfile.C.diff
File mfile.C.diff, 1.9 KB (added by , 17 years ago) |
---|
-
mfile.C
old new 62 62 int MFILE::vprintf(const char* format, va_list ap) { 63 63 char buf2[BUFSIZE]; 64 64 int n, k; 65 char* buft; 65 66 66 67 k = vsnprintf(buf2, BUFSIZE, format, ap); 67 68 if (k<=-1 || k>=BUFSIZE) { … … 71 72 return -1; 72 73 } 73 74 n = (int)strlen(buf2); 74 buf = (char*)realloc(buf, len+n+1); 75 if (!buf) { 75 buft = (char*)realloc(buf, len+n+1); 76 if (buft) { 77 buf = buft; 78 } else { 79 free(buf); //buf still exists, do you want to flush it or free it? 80 buf = 0; 81 len = 0; 76 82 errno = ERR_MALLOC; 77 83 return ERR_MALLOC; 78 84 } … … 93 99 } 94 100 95 101 size_t MFILE::write(const void *ptr, size_t size, size_t nitems) { 96 buf = (char *)realloc( buf, len+(size*nitems)+1 ); 97 if (!buf) { 102 char* buft = (char *)realloc( buf, len+(size*nitems)+1 ); 103 if (buft) { 104 buf = buft; 105 } else { 106 free(buf); //buf still exists, do you want to flush it or free it? 107 buf = 0; 108 len = 0; 98 109 errno = ERR_MALLOC; 99 110 return 0; 100 111 } … … 105 116 } 106 117 107 118 int MFILE::_putchar(char c) { 108 buf = (char*)realloc(buf, len+1+1); 109 if (!buf) { 119 char* buft = (char*)realloc(buf, len+1+1); 120 if (buft) { 121 buf = buft; 122 } else { 123 free(buf); //buf still exists, do you want to flush it or free it? 124 buf = 0; 125 len = 0; 110 126 errno = ERR_MALLOC; 111 127 return EOF; 112 128 } … … 118 134 119 135 int MFILE::puts(const char* p) { 120 136 int n = (int)strlen(p); 121 buf = (char*)realloc(buf, len+n+1); 122 if (!buf) { 137 char* buft = (char*)realloc(buf, len+n+1); 138 if (buft) { 139 buf = buft; 140 } else { 141 free(buf); //buf still exists, do you want to flush it or free it? 142 buf = 0; 143 len = 0; 123 144 errno = ERR_MALLOC; 124 145 return EOF; 125 146 }