diff --git a/files/drive.c b/files/drive.c
index 0c34655..b294389 100644
--- a/files/drive.c
+++ b/files/drive.c
@@ -108,6 +108,14 @@
 
 static HTASK16 DRIVE_LastTask = 0;
 
+/* strdup on the process heap */
+inline static char *heap_strdup( const char *str )
+{
+    INT len = strlen(str) + 1;
+    LPSTR p = HeapAlloc( GetProcessHeap(), 0, len );
+    if (p) memcpy( p, str, len );
+    return p;
+}
 
 /***********************************************************************
  *           DRIVE_GetDriveType
@@ -179,9 +187,9 @@
                 continue;
             }
 
-            drive->root = HEAP_strdupA( GetProcessHeap(), 0, path );
-            drive->dos_cwd  = HEAP_strdupA( GetProcessHeap(), 0, "" );
-            drive->unix_cwd = HEAP_strdupA( GetProcessHeap(), 0, "" );
+            drive->root     = heap_strdup( path );
+            drive->dos_cwd  = heap_strdup( "" );
+            drive->unix_cwd = heap_strdup( "" );
             drive->type     = DRIVE_GetDriveType( name );
             drive->device   = NULL;
             drive->flags    = 0;
@@ -212,7 +220,7 @@
                                       buffer, sizeof(buffer) );
             if (buffer[0])
 	    {
-                drive->device = HEAP_strdupA( GetProcessHeap(), 0, buffer );
+                drive->device = heap_strdup( buffer );
 		if (PROFILE_GetWineIniBool( name, "ReadVolInfo", 1))
                     drive->flags |= DRIVE_READ_VOL_INFO;
 	    }
@@ -239,9 +247,9 @@
     {
         MESSAGE("Warning: no valid DOS drive found, check your configuration file.\n" );
         /* Create a C drive pointing to Unix root dir */
-        DOSDrives[2].root     = HEAP_strdupA( GetProcessHeap(), 0, "/" );
-        DOSDrives[2].dos_cwd  = HEAP_strdupA( GetProcessHeap(), 0, "" );
-        DOSDrives[2].unix_cwd = HEAP_strdupA( GetProcessHeap(), 0, "" );
+        DOSDrives[2].root     = heap_strdup( "/" );
+        DOSDrives[2].dos_cwd  = heap_strdup( "" );
+        DOSDrives[2].unix_cwd = heap_strdup( "" );
         strcpy( DOSDrives[2].label_conf, "Drive C    " );
         DOSDrives[2].serial_conf   = 12345678;
         DOSDrives[2].type     = DRIVE_FIXED;
@@ -694,9 +702,8 @@
 
     HeapFree( GetProcessHeap(), 0, DOSDrives[drive].dos_cwd );
     HeapFree( GetProcessHeap(), 0, DOSDrives[drive].unix_cwd );
-    DOSDrives[drive].dos_cwd  = HEAP_strdupA( GetProcessHeap(), 0,
-                                              full_name.short_name + 3 );
-    DOSDrives[drive].unix_cwd = HEAP_strdupA( GetProcessHeap(), 0, unix_cwd );
+    DOSDrives[drive].dos_cwd  = heap_strdup( full_name.short_name + 3 );
+    DOSDrives[drive].unix_cwd = heap_strdup( unix_cwd );
 
     if (pTask && (pTask->curdrive & 0x80) && 
         ((pTask->curdrive & ~0x80) == drive))
@@ -771,10 +778,10 @@
 	return 0;
     }
 
-    new->root = HEAP_strdupA( GetProcessHeap(), 0, old->root );
-    new->dos_cwd = HEAP_strdupA( GetProcessHeap(), 0, old->dos_cwd );
-    new->unix_cwd = HEAP_strdupA( GetProcessHeap(), 0, old->unix_cwd );
-    new->device = HEAP_strdupA( GetProcessHeap(), 0, old->device );
+    new->root     = heap_strdup( old->root );
+    new->dos_cwd  = heap_strdup( old->dos_cwd );
+    new->unix_cwd = heap_strdup( old->unix_cwd );
+    new->device   = heap_strdup( old->device );
     memcpy ( new->label_conf, old->label_conf, 12 );
     memcpy ( new->label_read, old->label_read, 12 );
     new->serial_conf = old->serial_conf;
