Commits

Anonymous committed 2c61786

implement exit_thread through SystemExit exception

Comments (0)

Files changed (1)

Modules/threadmodule.c

 	res = call_object(func, arg);
 	DECREF(args); /* Matches the INCREF(args) in thread_start_new_thread */
 	if (res == NULL) {
-		fprintf(stderr, "Unhandled exception in thread:\n");
-		print_error(); /* From pythonmain.c */
+		if (err_occurred() == SystemExit)
+			err_clear();
+		else {
+			fprintf(stderr, "Unhandled exception in thread:\n");
+			print_error(); /* From pythonmain.c */
+		}
 	}
 	else
 		DECREF(res);
 	object *self; /* Not used */
 	object *args;
 {
-	object *frame;
 	if (!getnoarg(args))
 		return NULL;
-	frame = save_thread(); /* Should never be NULL */
-	DECREF(frame);
-	exit_thread();
-	for (;;) { } /* Should not be reached */
+	err_set(SystemExit);
+	return NULL;
 }
 
 #ifndef NO_EXIT_PROG
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.