浏览代码

Fix bug on creating files

Lou Yihua 7 年之前
父节点
当前提交
07a8d43df6
共有 1 个文件被更改,包括 18 次插入1 次删除
  1. 18 1
      util.c

+ 18 - 1
util.c

@@ -519,11 +519,28 @@ UTIL_OpenFileAtPathForMode(
 	LPCSTR              szMode
 )
 {
+	if (!lpszPath || !lpszFileName || !szMode) return NULL;
+
 	//
 	// Construct full path according to lpszPath and lpszFileName
 	//
 	const char *path = UTIL_GetFullPathName(internal_buffer[PAL_MAX_GLOBAL_BUFFERS], PAL_GLOBAL_BUFFER_SIZE, lpszPath, lpszFileName);
-	return path ? fopen(path, szMode) : NULL;
+
+	//
+	// If no matching path, check the open mode
+	//
+	if (path)
+	{
+		return fopen(path, szMode);
+	}
+	else if (szMode[0] != 'r')
+	{
+		return fopen(UTIL_CombinePath(internal_buffer[PAL_MAX_GLOBAL_BUFFERS], PAL_GLOBAL_BUFFER_SIZE, lpszPath, lpszFileName), szMode);
+	}
+	else
+	{
+		return NULL;
+	}
 }
 
 VOID