Kevin Fenzi 9f1d9e
diff -Nur fontforge-20090923.orig/gutils/fsys.c fontforge-20090923/gutils/fsys.c
Kevin Fenzi 9f1d9e
--- fontforge-20090923.orig/gutils/fsys.c	2009-01-25 11:06:49.000000000 -0700
Kevin Fenzi 9f1d9e
+++ fontforge-20090923/gutils/fsys.c	2009-12-31 09:59:54.000000000 -0700
Kevin Fenzi 9f1d9e
@@ -41,6 +41,15 @@
Kevin Fenzi 9f1d9e
 
Kevin Fenzi 9f1d9e
 static char dirname_[1024];
Kevin Fenzi 9f1d9e
 
Kevin Fenzi 9f1d9e
+static void savestrcpy(char *dest,const char *src) {
Kevin Fenzi 9f1d9e
+    forever {
Kevin Fenzi 9f1d9e
+       *dest = *src;
Kevin Fenzi 9f1d9e
+       if ( *dest=='\0' )
Kevin Fenzi 9f1d9e
+    break;
Kevin Fenzi 9f1d9e
+       ++dest; ++src;
Kevin Fenzi 9f1d9e
+    }
Kevin Fenzi 9f1d9e
+}
Kevin Fenzi 9f1d9e
+
Kevin Fenzi 9f1d9e
 char *GFileGetAbsoluteName(char *name, char *result, int rsiz) {
Kevin Fenzi 9f1d9e
     /* result may be the same as name */
Kevin Fenzi 9f1d9e
     char buffer[1000];
Kevin Fenzi 9f1d9e
@@ -62,13 +71,13 @@
Kevin Fenzi 9f1d9e
 	    if ( *spt=='/' ) ++spt;
Kevin Fenzi 9f1d9e
 	    for ( pt = spt; *pt!='\0' && *pt!='/'; ++pt );
Kevin Fenzi 9f1d9e
 	    if ( pt==spt )	/* Found // in a path spec, reduce to / (we've*/
Kevin Fenzi 9f1d9e
-		strcpy(spt,pt); /*  skipped past the :// of the machine name) */
Kevin Fenzi 9f1d9e
-	    else if ( pt==spt+1 && spt[0]=='.' )	/* Noop */
Kevin Fenzi 9f1d9e
-		strcpy(spt,pt);
Kevin Fenzi 9f1d9e
-	    else if ( pt==spt+2 && spt[0]=='.' && spt[1]=='.' ) {
Kevin Fenzi 9f1d9e
+               savestrcpy(spt,spt+1); /*  skipped past the :// of the machine name) */
Kevin Fenzi 9f1d9e
+            else if ( pt==spt+1 && spt[0]=='.' ) {      /* Noop */
Kevin Fenzi 9f1d9e
+               savestrcpy(spt,spt+2);
Kevin Fenzi 9f1d9e
+            } else if ( pt==spt+2 && spt[0]=='.' && spt[1]=='.' ) {
Kevin Fenzi 9f1d9e
 		for ( bpt=spt-2 ; bpt>rpt && *bpt!='/'; --bpt );
Kevin Fenzi 9f1d9e
 		if ( bpt>=rpt && *bpt=='/' ) {
Kevin Fenzi 9f1d9e
-		    strcpy(bpt,pt);
Kevin Fenzi 9f1d9e
+                    savestrcpy(bpt,pt);
Kevin Fenzi 9f1d9e
 		    spt = bpt;
Kevin Fenzi 9f1d9e
 		} else {
Kevin Fenzi 9f1d9e
 		    rpt = pt;
Kevin Fenzi 9f1d9e
@@ -99,7 +108,7 @@
Kevin Fenzi 9f1d9e
 
Kevin Fenzi 9f1d9e
     if ( dir==NULL || *dir=='\0' ) {
Kevin Fenzi 9f1d9e
 	if ( strlen( fname )
Kevin Fenzi 9f1d9e
-	    strcpy(buffer,fname);
Kevin Fenzi 9f1d9e
+            savestrcpy(buffer,fname);
Kevin Fenzi 9f1d9e
 	else {
Kevin Fenzi 9f1d9e
 	    strncpy(buffer,fname,size-1);
Kevin Fenzi 9f1d9e
 	    buffer[size-1]='\0';