]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Back out of b0eb750cab. It caused several tar/pax test failures.
authorMichihiro NAKAJIMA <ggcueroad@gmail.com>
Wed, 26 Sep 2012 02:10:31 +0000 (11:10 +0900)
committerMichihiro NAKAJIMA <ggcueroad@gmail.com>
Wed, 26 Sep 2012 02:10:31 +0000 (11:10 +0900)
libarchive/archive_read_support_format_tar.c

index 8186d27383a11f852a40a3299e7f0d0dbb5845df..4538331f3d05382a8e129c0e326fe9684a40bf8a 100644 (file)
@@ -2416,27 +2416,23 @@ tar_atol8(const char *p, unsigned char_cnt)
        limit = INT64_MAX / base;
        last_digit_limit = INT64_MAX % base;
 
-       while (char_cnt-- > 0 && (*p == ' ' || *p == '\t'))
+       while (*p == ' ' || *p == '\t')
                p++;
-
-       sign = 1;
-       if (char_cnt > 0 && *p == '-') {
+       if (*p == '-') {
                sign = -1;
                p++;
-               char_cnt--;
-       }
+       } else
+               sign = 1;
 
        l = 0;
-       if (char_cnt > 0) {
-               digit = *p - '0';
-               while (digit >= 0 && digit < base  && char_cnt-- > 0) {
-                       if (l>limit || (l == limit && digit > last_digit_limit)) {
-                               l = INT64_MAX; /* Truncate on overflow. */
-                               break;
-                       }
-                       l = (l * base) + digit;
-                       digit = *++p - '0';
+       digit = *p - '0';
+       while (digit >= 0 && digit < base  && char_cnt-- > 0) {
+               if (l>limit || (l == limit && digit > last_digit_limit)) {
+                       l = INT64_MAX; /* Truncate on overflow. */
+                       break;
                }
+               l = (l * base) + digit;
+               digit = *++p - '0';
        }
        return (sign < 0) ? -l : l;
 }
@@ -2456,27 +2452,23 @@ tar_atol10(const char *p, unsigned char_cnt)
        limit = INT64_MAX / base;
        last_digit_limit = INT64_MAX % base;
 
-       while (char_cnt-- > 0 && (*p == ' ' || *p == '\t'))
+       while (*p == ' ' || *p == '\t')
                p++;
-
-       sign = 1;
-       if (char_cnt > 0 && *p == '-') {
+       if (*p == '-') {
                sign = -1;
                p++;
-               char_cnt--;
-       }
+       } else
+               sign = 1;
 
        l = 0;
-       if (char_cnt > 0) {
-               digit = *p - '0';
-               while (digit >= 0 && digit < base  && char_cnt-- > 0) {
-                       if (l > limit || (l == limit && digit > last_digit_limit)) {
-                               l = INT64_MAX; /* Truncate on overflow. */
-                               break;
-                       }
-                       l = (l * base) + digit;
-                       digit = *++p - '0';
+       digit = *p - '0';
+       while (digit >= 0 && digit < base  && char_cnt-- > 0) {
+               if (l > limit || (l == limit && digit > last_digit_limit)) {
+                       l = INT64_MAX; /* Truncate on overflow. */
+                       break;
                }
+               l = (l * base) + digit;
+               digit = *++p - '0';
        }
        return (sign < 0) ? -l : l;
 }