From ffc6719a95a520a4d1b0705d48faf3734ae1e9df Mon Sep 17 00:00:00 2001 From: "(no author)" <(no author)@4f64403b-2f21-0410-a795-97e2b3489a10> Date: Tue, 4 Jan 2011 03:18:22 +0000 Subject: Safer class registration git-svn-id: https://server.scottellis.com.au/svn/mim_plugs@589 4f64403b-2f21-0410-a795-97e2b3489a10 --- yapp/services.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'yapp/services.cpp') diff --git a/yapp/services.cpp b/yapp/services.cpp index 2b113fa..857b814 100644 --- a/yapp/services.cpp +++ b/yapp/services.cpp @@ -395,7 +395,11 @@ POPUPCLASS *classes = 0; INT_PTR RegisterPopupClass(WPARAM wParam, LPARAM lParam) { - POPUPCLASS *pc = (POPUPCLASS *)lParam; + classes = (POPUPCLASS *)mir_realloc(classes, sizeof(POPUPCLASS) * (num_classes + 1)); + memcpy(classes + num_classes, (PVOID)lParam, sizeof(POPUPCLASS)); + POPUPCLASS *pc = classes + num_classes; + num_classes++; + pc->pszName = mir_strdup(pc->pszName); if(pc->flags & PCF_UNICODE) pc->pwszDescription = mir_wstrdup(pc->pwszDescription); @@ -411,9 +415,6 @@ INT_PTR RegisterPopupClass(WPARAM wParam, LPARAM lParam) mir_snprintf(setting, 256, "%s/BgCol", pc->pszName); pc->colorBack = (COLORREF)DBGetContactSettingDword(0, MODULE, setting, (DWORD)pc->colorBack); - classes = (POPUPCLASS *)mir_realloc(classes, sizeof(POPUPCLASS) * (num_classes + 1)); - memcpy(classes + num_classes, pc, sizeof(POPUPCLASS)); - num_classes++; return 0; } -- cgit v1.2.3