Revision b03c7a63a0fae58a576749d7a6b0507edde12584 authored by Adam Roben on 25 April 2007, 18:50:32 UTC, committed by Junio C Hamano on 26 April 2007, 03:58:02 UTC
Many functions and operators in perl set $_, so its value cannot be relied upon after calling arbitrary functions. The solution is simply to copy the value of $_ into a local variable that will not get overwritten. Signed-off-by: Adam Roben <aroben@apple.com> Acked-by: Eric Wong <normalperson@yhbt.net> Signed-off-by: Junio C Hamano <junkio@cox.net>
1 parent c21aa54
copy.c
#include "cache.h"
int copy_fd(int ifd, int ofd)
{
while (1) {
int len;
char buffer[8192];
char *buf = buffer;
len = xread(ifd, buffer, sizeof(buffer));
if (!len)
break;
if (len < 0) {
int read_error;
read_error = errno;
close(ifd);
return error("copy-fd: read returned %s",
strerror(read_error));
}
while (len) {
int written = xwrite(ofd, buf, len);
if (written > 0) {
buf += written;
len -= written;
}
else if (!written) {
close(ifd);
return error("copy-fd: write returned 0");
} else {
close(ifd);
return error("copy-fd: write returned %s",
strerror(errno));
}
}
}
close(ifd);
return 0;
}
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...