From 6cb6862806bcec9770410810bd3de6d901c83a94 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Wed, 23 Dec 2009 17:36:20 +0100 Subject: [PATCH] comdlg32: Store the open file name A structure directly instead of using a private pointer. --- dlls/comdlg32/filedlg.c | 63 ++++++++++++++++----------------------- dlls/comdlg32/filedlg31.h | 2 +- 2 files changed, 27 insertions(+), 38 deletions(-) diff --git a/dlls/comdlg32/filedlg.c b/dlls/comdlg32/filedlg.c index 6c3637774a9..980fc5fac76 100644 --- a/dlls/comdlg32/filedlg.c +++ b/dlls/comdlg32/filedlg.c @@ -105,11 +105,6 @@ typedef struct tagLookInInfo UINT uSelectedItem; } LookInInfos; -typedef struct tagFD32_PRIVATE -{ - OPENFILENAMEA *ofnA; /* original structure if 32bits ansi dialog */ -} FD32_PRIVATE, *PFD32_PRIVATE; - /*********************************************************************** * Defines and global variables @@ -3748,7 +3743,7 @@ static void MemFree(void *mem) static BOOL FD32_GetTemplate(PFD31_DATA lfs) { LPOPENFILENAMEW ofnW = lfs->ofnW; - PFD32_PRIVATE priv = (PFD32_PRIVATE) lfs->private1632; + LPOPENFILENAMEA ofnA = lfs->ofnA; HANDLE hDlgTmpl; if (ofnW->Flags & OFN_ENABLETEMPLATEHANDLE) @@ -3762,9 +3757,9 @@ static BOOL FD32_GetTemplate(PFD31_DATA lfs) else if (ofnW->Flags & OFN_ENABLETEMPLATE) { HRSRC hResInfo; - if (priv->ofnA) - hResInfo = FindResourceA(priv->ofnA->hInstance, - priv->ofnA->lpTemplateName, + if (ofnA) + hResInfo = FindResourceA(ofnA->hInstance, + ofnA->lpTemplateName, (LPSTR)RT_DIALOG); else hResInfo = FindResourceW(ofnW->hInstance, @@ -3808,13 +3803,10 @@ static BOOL FD32_GetTemplate(PFD31_DATA lfs) static BOOL CALLBACK FD32_Init(LPARAM lParam, PFD31_DATA lfs, DWORD data) { BOOL IsUnicode = (BOOL) data; - PFD32_PRIVATE priv; - priv = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(FD32_PRIVATE)); - lfs->private1632 = priv; - if (NULL == lfs->private1632) return FALSE; if (IsUnicode) { + lfs->ofnA = NULL; lfs->ofnW = (LPOPENFILENAMEW) lParam; if (lfs->ofnW->Flags & OFN_ENABLEHOOK) if (lfs->ofnW->lpfnHook) @@ -3822,12 +3814,12 @@ static BOOL CALLBACK FD32_Init(LPARAM lParam, PFD31_DATA lfs, DWORD data) } else { - priv->ofnA = (LPOPENFILENAMEA) lParam; - if (priv->ofnA->Flags & OFN_ENABLEHOOK) - if (priv->ofnA->lpfnHook) + lfs->ofnA = (LPOPENFILENAMEA) lParam; + if (lfs->ofnA->Flags & OFN_ENABLEHOOK) + if (lfs->ofnA->lpfnHook) lfs->hook = TRUE; lfs->ofnW = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*lfs->ofnW)); - FD31_MapOfnStructA(priv->ofnA, lfs->ofnW, lfs->open); + FD31_MapOfnStructA(lfs->ofnA, lfs->ofnW, lfs->open); } if (! FD32_GetTemplate(lfs)) return FALSE; @@ -3844,15 +3836,14 @@ static BOOL CALLBACK FD32_CallWindowProc(const FD31_DATA *lfs, UINT wMsg, WPARAM LPARAM lParam) { BOOL ret; - PFD32_PRIVATE priv = (PFD32_PRIVATE) lfs->private1632; - if (priv->ofnA) + if (lfs->ofnA) { TRACE("Call hookA %p (%p, %04x, %08lx, %08lx)\n", - priv->ofnA->lpfnHook, lfs->hwnd, wMsg, wParam, lParam); - ret = priv->ofnA->lpfnHook(lfs->hwnd, wMsg, wParam, lParam); + lfs->ofnA->lpfnHook, lfs->hwnd, wMsg, wParam, lParam); + ret = lfs->ofnA->lpfnHook(lfs->hwnd, wMsg, wParam, lParam); TRACE("ret hookA %p (%p, %04x, %08lx, %08lx)\n", - priv->ofnA->lpfnHook, lfs->hwnd, wMsg, wParam, lParam); + lfs->ofnA->lpfnHook, lfs->hwnd, wMsg, wParam, lParam); return ret; } @@ -3870,25 +3861,25 @@ static BOOL CALLBACK FD32_CallWindowProc(const FD31_DATA *lfs, UINT wMsg, WPARAM */ static void CALLBACK FD32_UpdateResult(const FD31_DATA *lfs) { - PFD32_PRIVATE priv = (PFD32_PRIVATE) lfs->private1632; LPOPENFILENAMEW ofnW = lfs->ofnW; + LPOPENFILENAMEA ofnA = lfs->ofnA; - if (priv->ofnA) + if (ofnA) { LPSTR lpszTemp; if (ofnW->nMaxFile && !WideCharToMultiByte( CP_ACP, 0, ofnW->lpstrFile, -1, - priv->ofnA->lpstrFile, ofnW->nMaxFile, NULL, NULL )) - priv->ofnA->lpstrFile[ofnW->nMaxFile-1] = 0; + ofnA->lpstrFile, ofnA->nMaxFile, NULL, NULL )) + ofnA->lpstrFile[ofnA->nMaxFile-1] = 0; /* offsets are not guaranteed to be the same in WCHAR to MULTIBYTE conversion */ /* set filename offset */ - lpszTemp = PathFindFileNameA(priv->ofnA->lpstrFile); - priv->ofnA->nFileOffset = (lpszTemp - priv->ofnA->lpstrFile); + lpszTemp = PathFindFileNameA(ofnA->lpstrFile); + ofnA->nFileOffset = (lpszTemp - ofnA->lpstrFile); /* set extension offset */ - lpszTemp = PathFindExtensionA(priv->ofnA->lpstrFile); - priv->ofnA->nFileExtension = (*lpszTemp) ? (lpszTemp - priv->ofnA->lpstrFile) + 1 : 0; + lpszTemp = PathFindExtensionA(ofnA->lpstrFile); + ofnA->nFileExtension = (*lpszTemp) ? (lpszTemp - ofnA->lpstrFile) + 1 : 0; } } @@ -3898,14 +3889,14 @@ static void CALLBACK FD32_UpdateResult(const FD31_DATA *lfs) */ static void CALLBACK FD32_UpdateFileTitle(const FD31_DATA *lfs) { - PFD32_PRIVATE priv = (PFD32_PRIVATE) lfs->private1632; LPOPENFILENAMEW ofnW = lfs->ofnW; + LPOPENFILENAMEA ofnA = lfs->ofnA; - if (priv->ofnA) + if (ofnA) { if (!WideCharToMultiByte( CP_ACP, 0, ofnW->lpstrFileTitle, -1, - priv->ofnA->lpstrFileTitle, ofnW->nMaxFileTitle, NULL, NULL )) - priv->ofnA->lpstrFileTitle[ofnW->nMaxFileTitle-1] = 0; + ofnA->lpstrFileTitle, ofnA->nMaxFileTitle, NULL, NULL )) + ofnA->lpstrFileTitle[ofnA->nMaxFileTitle-1] = 0; } } @@ -3926,10 +3917,8 @@ static LRESULT CALLBACK FD32_SendLbGetCurSel(const FD31_DATA *lfs) */ static void CALLBACK FD32_Destroy(const FD31_DATA *lfs) { - PFD32_PRIVATE priv = (PFD32_PRIVATE) lfs->private1632; - /* if ofnW has been allocated, have to free everything in it */ - if (NULL != priv && NULL != priv->ofnA) + if (lfs->ofnA) { FD31_FreeOfnW(lfs->ofnW); HeapFree(GetProcessHeap(), 0, lfs->ofnW); diff --git a/dlls/comdlg32/filedlg31.h b/dlls/comdlg32/filedlg31.h index 7328f07d209..ed7a173f3a4 100644 --- a/dlls/comdlg32/filedlg31.h +++ b/dlls/comdlg32/filedlg31.h @@ -46,7 +46,7 @@ struct tagFD31_DATA BOOL open; /* TRUE if open dialog, FALSE if save dialog */ LPOPENFILENAMEW ofnW; /* pointer either to the original structure or a W copy for A/16 API */ - LPVOID private1632; /* 16/32 bit caller private data */ + LPOPENFILENAMEA ofnA; /* original structure if 32bits ansi dialog */ PFD31_CALLBACKS callbacks; /* callbacks to handle 16/32 bit differences */ };