Fix GetTempDrive behaviour.
diff --git a/files/directory.c b/files/directory.c
index 3d81f69..9ef6efe 100644
--- a/files/directory.c
+++ b/files/directory.c
@@ -193,10 +193,18 @@
*/
BYTE WINAPI GetTempDrive( BYTE ignored )
{
- char buffer[2];
+ char *buffer;
+ BYTE ret;
+ UINT32 len = GetTempPath32A( 0, NULL );
+
+ if (!(buffer = HeapAlloc( GetProcessHeap(), 0, len + 1 )) )
+ return DRIVE_GetCurrentDrive() + 'A';
+
/* FIXME: apparently Windows does something with the ignored byte */
- if (!GetTempPath32A( sizeof(buffer), buffer )) buffer[0] = 'C';
- return toupper(buffer[0]);
+ if (!GetTempPath32A( len, buffer )) buffer[0] = 'C';
+ ret = buffer[0];
+ HeapFree( GetProcessHeap(), 0, buffer );
+ return toupper(ret);
}