--- a/model/dce-fd.cc Wed Nov 06 05:49:30 2013 +0900 +++ a/model/dce-fd.cc Wed Nov 06 05:53:29 2013 +0900 @@ -320,16 +320,17 @@ } void *buf = malloc (count); + void *bufp = buf; for (int i = 0; i < iovcnt; ++i) { - memcpy (buf, iov[i].iov_base, iov[i].iov_len); - buf += iov[i].iov_len; + memcpy (bufp, iov[i].iov_base, iov[i].iov_len); + bufp += iov[i].iov_len; } UnixFd *unixFd = current->process->openFiles[fd]->GetFileInc (); int retval = unixFd->Write (buf, count); FdDecUsage (fd); - free (buf - count); + free (buf); return retval; }