X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gmodule%2Fgmodule-win32.c;h=2a35b1920e04d8075866c5126f427892b5911847;hb=2e5bd8cf47f9e1559ccc44823a2f321b8ff8c1ea;hp=98d3fb9c600b1b131a8f257bd086d0a75a2988ba;hpb=45a1c41e8cfdeb4edeb7a671b95e599a49c6c281;p=platform%2Fupstream%2Fglib.git diff --git a/gmodule/gmodule-win32.c b/gmodule/gmodule-win32.c index 98d3fb9..2a35b19 100644 --- a/gmodule/gmodule-win32.c +++ b/gmodule/gmodule-win32.c @@ -15,9 +15,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, see . */ /* @@ -84,7 +82,7 @@ _g_module_open (const gchar *file_name, g_free (wfilename); if (!handle) - set_error ("`%s': ", file_name); + set_error ("'%s': ", file_name); return handle; } @@ -110,45 +108,22 @@ _g_module_close (gpointer handle, static gpointer find_in_any_module_using_toolhelp (const gchar *symbol_name) { - typedef HANDLE (WINAPI *PFNCREATETOOLHELP32SNAPSHOT)(DWORD, DWORD); - static PFNCREATETOOLHELP32SNAPSHOT pfnCreateToolhelp32Snapshot = NULL; - - typedef BOOL (WINAPI *PFNMODULE32FIRST)(HANDLE, MODULEENTRY32*); - static PFNMODULE32FIRST pfnModule32First= NULL; - - typedef BOOL (WINAPI *PFNMODULE32NEXT)(HANDLE, MODULEENTRY32*); - static PFNMODULE32NEXT pfnModule32Next = NULL; - - static HMODULE kernel32; - HANDLE snapshot; MODULEENTRY32 me32; gpointer p; - if (!pfnCreateToolhelp32Snapshot || !pfnModule32First || !pfnModule32Next) - { - if (!kernel32) - if (!(kernel32 = GetModuleHandle ("kernel32.dll"))) - return NULL; - - if (!(pfnCreateToolhelp32Snapshot = (PFNCREATETOOLHELP32SNAPSHOT) GetProcAddress (kernel32, "CreateToolhelp32Snapshot")) - || !(pfnModule32First = (PFNMODULE32FIRST) GetProcAddress (kernel32, "Module32First")) - || !(pfnModule32Next = (PFNMODULE32NEXT) GetProcAddress (kernel32, "Module32Next"))) - return NULL; - } - - if ((snapshot = (*pfnCreateToolhelp32Snapshot) (TH32CS_SNAPMODULE, 0)) == (HANDLE) -1) + if ((snapshot = CreateToolhelp32Snapshot (TH32CS_SNAPMODULE, 0)) == (HANDLE) -1) return NULL; me32.dwSize = sizeof (me32); p = NULL; - if ((*pfnModule32First) (snapshot, &me32)) + if (Module32First (snapshot, &me32)) { do { if ((p = GetProcAddress (me32.hModule, symbol_name)) != NULL) break; - } while ((*pfnModule32Next) (snapshot, &me32)); + } while (Module32Next (snapshot, &me32)); } CloseHandle (snapshot); @@ -157,62 +132,11 @@ find_in_any_module_using_toolhelp (const gchar *symbol_name) } static gpointer -find_in_any_module_using_psapi (const gchar *symbol_name) -{ - static HMODULE psapi = NULL; - - typedef BOOL (WINAPI *PFNENUMPROCESSMODULES) (HANDLE, HMODULE *, DWORD, LPDWORD) ; - static PFNENUMPROCESSMODULES pfnEnumProcessModules = NULL; - - HMODULE *modules; - HMODULE dummy; - gint i, size; - DWORD needed; - - gpointer p; - - if (!pfnEnumProcessModules) - { - if (!psapi) - if ((psapi = LoadLibrary ("psapi.dll")) == NULL) - return NULL; - - if (!(pfnEnumProcessModules = (PFNENUMPROCESSMODULES) GetProcAddress (psapi, "EnumProcessModules"))) - return NULL; - } - - if (!(*pfnEnumProcessModules) (GetCurrentProcess (), &dummy, - sizeof (HMODULE), &needed)) - return NULL; - - size = needed + 10 * sizeof (HMODULE); - modules = g_malloc (size); - - if (!(*pfnEnumProcessModules) (GetCurrentProcess (), modules, - size, &needed) - || needed > size) - { - g_free (modules); - return NULL; - } - - p = NULL; - for (i = 0; i < needed / sizeof (HMODULE); i++) - if ((p = GetProcAddress (modules[i], symbol_name)) != NULL) - break; - - g_free (modules); - - return p; -} - -static gpointer find_in_any_module (const gchar *symbol_name) { gpointer result; - if ((result = find_in_any_module_using_toolhelp (symbol_name)) == NULL - && (result = find_in_any_module_using_psapi (symbol_name)) == NULL) + if ((result = find_in_any_module_using_toolhelp (symbol_name)) == NULL) return NULL; else return result;