1.1 --- a/ucx/utils.c Mon Jul 14 12:45:48 2014 +0200 1.2 +++ b/ucx/utils.c Mon Jul 14 13:20:03 2014 +0200 1.3 @@ -54,18 +54,22 @@ 1.4 return 0; 1.5 } 1.6 1.7 + char *lbuf; 1.8 size_t ncp = 0; 1.9 - if (!buf) { 1.10 - buf = (char*)malloc(bufsize); 1.11 - if(buf == NULL) { 1.12 + 1.13 + if(buf) { 1.14 + lbuf = buf; 1.15 + } else { 1.16 + lbuf = (char*)malloc(bufsize); 1.17 + if(lbuf == NULL) { 1.18 return 0; 1.19 } 1.20 } 1.21 1.22 size_t r; 1.23 size_t rn = bufsize > n ? n : bufsize; 1.24 - while((r = readfnc(buf, 1, rn, src)) != 0) { 1.25 - r = writefnc(buf, 1, r, dest); 1.26 + while((r = readfnc(lbuf, 1, rn, src)) != 0) { 1.27 + r = writefnc(lbuf, 1, r, dest); 1.28 ncp += r; 1.29 n -= r; 1.30 rn = bufsize > n ? n : bufsize; 1.31 @@ -74,7 +78,10 @@ 1.32 } 1.33 } 1.34 1.35 - free(buf); 1.36 + if (lbuf != buf) { 1.37 + free(lbuf); 1.38 + } 1.39 + 1.40 return ncp; 1.41 } 1.42