Module: wine Branch: master Commit: 6cb6862806bcec9770410810bd3de6d901c83a94 URL: http://source.winehq.org/git/wine.git/?a=commit;h=6cb6862806bcec9770410810bd...
Author: Alexandre Julliard julliard@winehq.org Date: Wed Dec 23 17:36:20 2009 +0100
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 6c36377..980fc5f 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 7328f07..ed7a173 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 */ };