Formerly ../time/sys/time.h.~16~
[kopensolaris-gnu/glibc.git] / time / zic.c
index 7928a56..ce384f9 100644 (file)
@@ -1877,14 +1877,20 @@ const char * const      string;
        charcnt += eitol(i);
 }
 
        charcnt += eitol(i);
 }
 
+
 static int
 static int
-mkdirs(name)
-char * const   name;
+mkdirs(argname)
+char * const   argname;
 {
        register char * cp;
 {
        register char * cp;
+       /* We must make a copy in case the
+          passed pointer is a read-only string.  */
+       char *name = ecpyalloc (argname);
 
 
-       if ((cp = name) == NULL || *cp == '\0')
-               return 0;
+       if (*cp == '\0') {
+         ifree (name);
+         return 0;
+       }
        while ((cp = strchr(cp + 1, '/')) != 0) {
                *cp = '\0';
 #ifndef unix
        while ((cp = strchr(cp + 1, '/')) != 0) {
                *cp = '\0';
 #ifndef unix
@@ -1906,11 +1912,13 @@ char * const    name;
                                        "%s: Can't create directory ",
                                        progname);
                                (void) perror(name);
                                        "%s: Can't create directory ",
                                        progname);
                                (void) perror(name);
+                               free (name);
                                return -1;
                        }
                }
                *cp = '/';
        }
                                return -1;
                        }
                }
                *cp = '/';
        }
+       free (name);
        return 0;
 }
 
        return 0;
 }