Merge branch 'master' into blender2.8
authorPhilipp Oeser <info@graphics-engineer.com>
Mon, 11 Jun 2018 08:03:42 +0000 (10:03 +0200)
committerPhilipp Oeser <info@graphics-engineer.com>
Mon, 11 Jun 2018 08:03:42 +0000 (10:03 +0200)
source/blender/blenlib/intern/path_util.c

index 0533126fe56707c175d3510f4f22a3bf5c1417f4..f59ef7fd39f2e83826a42356fd28880a087d91f3 100644 (file)
@@ -113,25 +113,29 @@ int BLI_stringdec(const char *string, char *head, char *tail, unsigned short *nu
        }
 
        if (found_digit) {
-               if (tail) strcpy(tail, &string[nume + 1]);
-               if (head) {
-                       strcpy(head, string);
-                       head[nums] = 0;
+               char *ptr;
+               long ret;
+               ret = strtoll(&(string[nums]), &ptr, 10);
+               if (ret >= INT_MIN && ret <= INT_MAX) {
+                       if (tail) strcpy(tail, &string[nume + 1]);
+                       if (head) {
+                               strcpy(head, string);
+                               head[nums] = 0;
+                       }
+                       if (numlen) *numlen = nume - nums + 1;
+                       return ((int)ret);
                }
-               if (numlen) *numlen = nume - nums + 1;
-               return ((int)atoi(&(string[nums])));
        }
-       else {
-               if (tail) strcpy(tail, string + name_end);
-               if (head) {
-                       /* name_end points to last character of head,
-                        * make it +1 so null-terminator is nicely placed
-                        */
-                       BLI_strncpy(head, string, name_end + 1);
-               }
-               if (numlen) *numlen = 0;
-               return 0;
+
+       if (tail) strcpy(tail, string + name_end);
+       if (head) {
+               /* name_end points to last character of head,
+                * make it +1 so null-terminator is nicely placed
+                */
+               BLI_strncpy(head, string, name_end + 1);
        }
+       if (numlen) *numlen = 0;
+       return 0;
 }