checkout: check for "Previous HEAD" notice in t2020
[gitweb.git] / wrapper.c
index 55b074ec46b0a222b03f8bea42f4d5cdd9811293..85f09df747637b94e0488ad65984c3f97c732034 100644 (file)
--- a/wrapper.c
+++ b/wrapper.c
@@ -53,7 +53,7 @@ void *xmalloc(size_t size)
 void *xmallocz(size_t size)
 {
        void *ret;
-       if (size + 1 < size)
+       if (unsigned_add_overflows(size, 1))
                die("Data too large to fit into virtual memory space.");
        ret = xmalloc(size + 1);
        ((char*)ret)[size] = 0;
@@ -148,8 +148,10 @@ ssize_t read_in_full(int fd, void *buf, size_t count)
 
        while (count > 0) {
                ssize_t loaded = xread(fd, p, count);
-               if (loaded <= 0)
-                       return total ? total : loaded;
+               if (loaded < 0)
+                       return -1;
+               if (loaded == 0)
+                       return total;
                count -= loaded;
                p += loaded;
                total += loaded;
@@ -209,7 +211,7 @@ int xmkstemp(char *template)
                if (!template[0])
                        template = origtemplate;
 
-               nonrelative_template = make_nonrelative_path(template);
+               nonrelative_template = absolute_path(template);
                errno = saved_errno;
                die_errno("Unable to create temporary file '%s'",
                        nonrelative_template);
@@ -344,7 +346,7 @@ int xmkstemp_mode(char *template, int mode)
                if (!template[0])
                        template = origtemplate;
 
-               nonrelative_template = make_nonrelative_path(template);
+               nonrelative_template = absolute_path(template);
                errno = saved_errno;
                die_errno("Unable to create temporary file '%s'",
                        nonrelative_template);