Unicode replace() method with empty pattern argument should fail, like
it does for 8-bit strings.
diff --git a/Lib/test/test_unicode.py b/Lib/test/test_unicode.py
index 429b673..a915b2e 100644
--- a/Lib/test/test_unicode.py
+++ b/Lib/test/test_unicode.py
@@ -206,6 +206,12 @@
 test('replace', u'one!two!three!', u'one@two@three@', u'!', u'@')
 test('replace', u'one!two!three!', u'one!two!three!', u'x', u'@')
 test('replace', u'one!two!three!', u'one!two!three!', u'x', u'@', 2)
+try:
+    u"abc".replace(u"", u"x")
+except ValueError:
+    pass
+else:
+    raise TestFailed, "u.replace('', ...) should raise ValueError"
 
 test('startswith', u'hello', True, u'he')
 test('startswith', u'hello', True, u'hello')
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 03b5dbd..d6fd62a 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -3455,6 +3455,11 @@
 {
     PyUnicodeObject *u;
 
+    if (str1->length == 0) {
+	PyErr_SetString(PyExc_ValueError, "empty pattern string");
+	return NULL;
+    }
+
     if (maxcount < 0)
 	maxcount = INT_MAX;