The _warnings module did not properly handle cases where strings were not being
passed in as the message to use for a warning. Fixed along with making the code
more robust against other errors where return values were not checked.

Closes issue 3639.
Code review by Benjamin Peterson.
diff --git a/Misc/NEWS b/Misc/NEWS
index 5290a83..366fc54 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,9 @@
 Core and Builtins
 -----------------
 
+- Issue 3639: The _warnings module could segfault the interpreter when
+  unexpected types were passed in as arguments.
+
 - Issue #3712: The memoryview object had a reference leak and didn't support
   cyclic garbage collection.