X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=daemon%2Ftransfer.c;h=e2fe54ec21e0f762a8d995b3f831fffed79a7f78;hb=e3f10dc2796fd709fece28a8a2e82733bc273d47;hp=300a33d4b6c9fec4c42226eb968a99192b352cd0;hpb=645a4af76f6cc26e1fe2a6ed0c4d94ed9c358a55;p=doldaconnect.git diff --git a/daemon/transfer.c b/daemon/transfer.c index 300a33d..e2fe54e 100644 --- a/daemon/transfer.c +++ b/daemon/transfer.c @@ -1,6 +1,6 @@ /* * Dolda Connect - Modular multiuser Direct Connect-style client - * Copyright (C) 2004 Fredrik Tolf (fredrik@dolda2000.com) + * Copyright (C) 2004 Fredrik Tolf * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -292,8 +292,12 @@ void *transfergetdata(struct transfer *transfer, size_t *size) return(NULL); if((transfer->endpos >= 0) && (transfer->curpos + *size >= transfer->endpos)) { - *size = transfer->endpos - transfer->curpos; - buf = srealloc(buf, *size); + if((*size = transfer->endpos - transfer->curpos) == 0) { + free(buf); + buf = NULL; + } else { + buf = srealloc(buf, *size); + } } transfer->curpos += *size; bytesupload += *size; @@ -666,7 +670,7 @@ int forkfilter(struct transfer *transfer) { argv = NULL; argvsize = argvdata = 0; - buf = sprintf2("%i", transfer->size); + buf = sprintf2("%zi", transfer->size); addtobuf(argv, filtername); addtobuf(argv, filename); addtobuf(argv, buf);