]> granicus.if.org Git - python/commitdiff
#3303: fix crash with invalid Py_DECREF in strcoll().
authorGeorg Brandl <georg@python.org>
Sat, 19 Jul 2008 12:46:12 +0000 (12:46 +0000)
committerGeorg Brandl <georg@python.org>
Sat, 19 Jul 2008 12:46:12 +0000 (12:46 +0000)
Lib/test/test_locale.py
Misc/NEWS
Modules/_localemodule.c

index a91d358d64cacc5c846102a576975e5fd0eaa978..c67fbfe2cb42f0f4bc07ab33f3ee6d4d2df28067 100644 (file)
@@ -1,4 +1,4 @@
-from test.test_support import verbose, TestSkipped
+from test.test_support import verbose, TestSkipped, TestFailed
 import locale
 import sys
 
@@ -113,3 +113,12 @@ else:
         teststrop('\xed\x95\xa0', 'upper', '\xed\x95\xa0')
     finally:
         locale.setlocale(locale.LC_CTYPE, oldlocale)
+
+if hasattr(locale, "strcoll"):
+    # test crasher from bug #3303
+    try:
+        locale.strcoll(u"a", None)
+    except TypeError:
+        pass
+    else:
+        raise TestFailed("TypeError not raised")
index 2226e8af2bdb2492a90c13ddcfd0e693a99c9964..dc0dbf3b7bdcab14f693497ed4dd96ada3d62a8b 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -56,17 +56,20 @@ Core and Builtins
   slice(None, 10, -1).indices(10) returns (9, 9, -1) instead of (9,
   10, -1).
 
-- Issue #3219: Calling a function with repeated keyword arguments, f(a=2, a=23),
-  would not cause a syntax error.  This was a regression from 2.4 caused by the
-  switch to the new compiler.
+- Issue #3219: Calling a function with repeated keyword arguments,
+  f(a=2, a=23), would not cause a syntax error.  This was a regression
+  from 2.4 caused by the switch to the new compiler.
 
-- Issue #2862: Make int and float freelist management consistent with other
-  freelists.  Changes their CompactFreeList apis into ClearFreeList apis and
-  calls them via gc.collect().
+- Issue #2862: Make int and float freelist management consistent with
+  other freelists.  Changes their CompactFreeList apis into
+  ClearFreeList apis and calls them via gc.collect().
 
 Library
 -------
 
+- Issue #3303: Fix a crash in locale.strcoll() when calling it with
+  invalid arguments.
+
 - Issue #3302: Fix several crashes when calling locale's gettext functions
   with None arguments.
 
@@ -145,7 +148,6 @@ Tests
   and is now better documented. Explicit unit tests for this context manager
   have been added to test_warnings.
 
-
 Build
 -----
 
index 09c025fe96cc7e7128442e411840e3252d5c80e5..bf5d58d0ac87379f28ec6a5190b2c4bfc48425bb 100644 (file)
@@ -301,7 +301,9 @@ PyLocale_strcoll(PyObject* self, PyObject* args)
     if (!PyUnicode_Check(os2)) {
         os2 = PyUnicode_FromObject(os2);
         if (!os2) {
-            Py_DECREF(os1);
+            if (rel1) {
+                Py_DECREF(os1);
+            }
             return NULL;
         } 
         rel2 = 1;