fix bug with volume root
diff --git a/Mac/Compat/nfullpath.c b/Mac/Compat/nfullpath.c
index 94ccc4c..ca027c8 100644
--- a/Mac/Compat/nfullpath.c
+++ b/Mac/Compat/nfullpath.c
@@ -1,6 +1,5 @@
 /* GET FULL PATHNAME OF A FILE.
 ** Original by Guido, modified by Jack to handle FSSpecs 
-** (and only tested under MetroWerks, so far)
 */
 
 #include <string.h>
@@ -12,7 +11,6 @@
 /* Mac file system parameters */
 #define MAXPATH 256	/* Max path name length+1 */
 #define SEP ':'		/* Separator in path names */
-#define ROOTID 2	/* DirID of a volume's root directory */
 
 /* Macro to find out whether we can do HFS-only calls: */
 #define FSFCBLen (* (short *) 0x3f6)
@@ -29,45 +27,49 @@
 		WDPBRec w;
 		VolumeParam v;
 	} pb;
-	static char cwd[2*MAXPATH];
+	char cwd[2*MAXPATH];
 	unsigned char namebuf[MAXPATH];
 	short err;
 	int dir;
 	long dirid;
-	char *next= cwd + sizeof cwd - 1;
+	char *next = cwd + sizeof cwd - 1;
 	int len;
-	
+	int need_sep = 1;
 	
 	if (!hfsrunning())
 		return -1;
 	
-	dir  = fsp->vRefNum;
+	dir = fsp->vRefNum;
 	dirid = fsp->parID;
 	/* Stuff the filename into the buffer */
 	len = fsp->name[0];
 	*next = '\0';
-	next -= len+1;
-	memcpy(next, &fsp->name[1], len);
+	next -= len;
+	memcpy(next, fsp->name+1, len);
 	
-	for (;;) {
-		pb.d.ioNamePtr= namebuf;
-		pb.d.ioVRefNum= dir;
-		pb.d.ioFDirIndex= -1;
-		pb.d.ioDrDirID= dirid;
+	while (dirid != fsRtParID) {
+		pb.d.ioNamePtr = namebuf;
+		pb.d.ioVRefNum = dir;
+		pb.d.ioFDirIndex = -1;
+		pb.d.ioDrDirID = dirid;
 		err= PBGetCatInfo((CInfoPBPtr)&pb.d, 0);
-		if (err != noErr) {
+		if (err != noErr)
 			return err;
-		}
-		*--next= SEP;
-		len= namebuf[0];
+		*--next = SEP;
+		len = namebuf[0];
 		if ( len + strlen(next) >= MAXPATH )
 			return -1;
 		next -= len;
 		memcpy(next, (char *)namebuf+1, len);
-		if (pb.d.ioDrDirID == ROOTID)
-			break;
-		dirid= pb.d.ioDrParID;
+		dirid = pb.d.ioDrParID;
+		need_sep = 0;
 	}
+	
 	strcpy(retbuf, next);
+	if (need_sep) {
+		next = strchr(retbuf, '\0');
+		*next++ = SEP;
+		*next++ = '\0';
+	}
 	return 0;
 }