From 9a5b0d4fbfdd7be9d3ed640cb310a33c26fac167 Mon Sep 17 00:00:00 2001
From: Eric Pouech <Eric.Pouech@wanadoo.fr>
Date: Sun, 25 Jun 2000 12:51:14 +0000
Subject: [PATCH] Fixed crash when lpTemplateName is gotten from
 MAKEINTRESOURCE.

---
 dlls/commdlg/colordlg.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/dlls/commdlg/colordlg.c b/dlls/commdlg/colordlg.c
index f35f3022c7f..fc6d4708752 100644
--- a/dlls/commdlg/colordlg.c
+++ b/dlls/commdlg/colordlg.c
@@ -1468,14 +1468,18 @@ BOOL WINAPI ChooseColorA( LPCHOOSECOLORA lpChCol )
   lpcc->Flags = lpChCol->Flags;
   lpcc->lCustData = lpChCol->lCustData;
   lpcc->lpfnHook = (LPCCHOOKPROC) lpChCol->lpfnHook;
-  if ((lpcc->Flags & CC_ENABLETEMPLATE) && (lpChCol->lpTemplateName))
-      lpcc->lpTemplateName = HEAP_strdupAtoW(GetProcessHeap(), 0, lpChCol->lpTemplateName);
-  
+  if ((lpcc->Flags & CC_ENABLETEMPLATE) && (lpChCol->lpTemplateName)) {
+      if (HIWORD(lpChCol->lpTemplateName))
+	  lpcc->lpTemplateName = HEAP_strdupAtoW(GetProcessHeap(), 0, lpChCol->lpTemplateName);
+      else
+	  lpcc->lpTemplateName = (LPWSTR)lpChCol->lpTemplateName;
+  }
+
   ret = ChooseColorW(lpcc);
 
   if (ret)
       lpChCol->rgbResult = lpcc->rgbResult;
-  if (lpcc->lpTemplateName) HeapFree(GetProcessHeap(), 0, (LPSTR)lpcc->lpTemplateName);
+  if (HIWORD(lpcc->lpTemplateName)) HeapFree(GetProcessHeap(), 0, (LPSTR)lpcc->lpTemplateName);
   HeapFree(GetProcessHeap(), 0, lpcc);
   return ret;
 }
-- 
GitLab