diff -u ../../ooh680-m2/dmake/make.c dmake/make.c --- ../../ooh680-m2/dmake/make.c 2007-10-15 18:40:19.000000000 +0300 +++ dmake/make.c 2008-01-18 23:49:18.943250000 +0200 @@ -150,11 +150,11 @@ { LISTCELLPTR next, cell; int len; - int slen, slen_rest; + int slen; char *result; char *p, *tpath; - if( (slen_rest = slen = s->len) == 0) + if( (slen = s->len) == 0) return(NIL(char)); /* reserve enough space to hold the concated original filenames. */ @@ -175,20 +175,17 @@ /* ... but only if DO_WINPATH() did something. */ len = strlen(tpath); - if( len > slen_rest ) { + if( len > cell->len ) { /* We need more memory. As DOS paths are usually shorter than the * original cygwin POSIX paths (exception mounted paths) this should * rarely happen. */ int p_offset = p - result; - /* Get more than needed. */ - slen += slen + len-slen_rest + 128; - if((result = realloc( result, (unsigned)(slen*sizeof(char)) ) ) == NULL) + slen += (len-cell->len) + 1; + if((result = realloc( result, slen ) ) == NULL) No_ram(); p = result + p_offset; } } - - slen_rest -= len; #endif memcpy((void *)p, (void *)tpath, len);