Commits

Brian Curtin committed 694d2dc

Clean up DbgHelp loading, changes multiple calls of 'enable' to work and just reset the settings

Comments (0)

Files changed (1)

 
     char *keywords[] = {"dir", "name", "type", NULL};
 
-    if (!GetCurrentDirectoryW(/* buffer size*/ MAX_PATH, pydir))
-        return NULL;
-
-    if (DbgHelp != NULL) { /* Already enabled. */
-        PyErr_SetString(PyExc_RuntimeError, "Can only enable once");
-        return NULL;
+    if (DbgHelp == NULL) {
+        if ((DbgHelp = LoadLibraryW(L"DbgHelp.dll")) != NULL)
+            return NULL;
     }
 
-    DbgHelp = LoadLibraryW(L"DbgHelp.dll");
-    if (DbgHelp == NULL)
+    if (!GetCurrentDirectoryW(/* buffer size*/ MAX_PATH, pydir))
         return NULL;
 
     if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|uui:enable", keywords,
     dump_details.dump_type = type;
 
     /* Store off the old filter so we can put it back later. */
-    previous_filter = SetUnhandledExceptionFilter(exception_filter);
+    if (previous_filter != exception_filter)
+        previous_filter = SetUnhandledExceptionFilter(exception_filter);
 
     Py_RETURN_NONE;
 }
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.