diff --git a/include/string b/include/string
index d07ff28..d6c148a 100644
--- a/include/string
+++ b/include/string
@@ -1031,16 +1031,16 @@
               _CharT __c, _SizeT __pos) _NOEXCEPT
 {
     if (__sz < 1)
-    	return __npos;
-	if (__pos < __sz)
-		++__pos;
-	else
-		__pos = __sz;
-	for (const _CharT* __ps = __p + __pos; __ps != __p;)
-	{
-		if (_Traits::eq(*--__ps, __c))
-			return static_cast<_SizeT>(__ps - __p);
-	}
+        return __npos;
+    if (__pos < __sz)
+        ++__pos;
+    else
+        __pos = __sz;
+    for (const _CharT* __ps = __p + __pos; __ps != __p;)
+    {
+        if (_Traits::eq(*--__ps, __c))
+            return static_cast<_SizeT>(__ps - __p);
+    }
     return __npos;
 }
 
@@ -2136,11 +2136,13 @@
 basic_string<_CharT, _Traits, _Allocator>::basic_string(basic_string&& __str, const allocator_type& __a)
     : __r_(__a)
 {
-    if (__a == __str.__alloc() || !__str.__is_long())
-        __r_.first().__r = __str.__r_.first().__r;
-    else
+    if (__str.__is_long() && __a != __str.__alloc()) // copy, not move
         __init(_VSTD::__to_raw_pointer(__str.__get_long_pointer()), __str.__get_long_size());
-    __str.__zero();
+    else
+    {
+        __r_.first().__r = __str.__r_.first().__r;
+        __str.__zero();
+    }
 #if _LIBCPP_DEBUG_LEVEL >= 2
     __get_db()->__insert_c(this);
     if (__is_long())
diff --git a/test/strings/basic.string/string.cons/move_alloc.pass.cpp b/test/strings/basic.string/string.cons/move_alloc.pass.cpp
index 4e8b038..1f96314 100644
--- a/test/strings/basic.string/string.cons/move_alloc.pass.cpp
+++ b/test/strings/basic.string/string.cons/move_alloc.pass.cpp
@@ -45,6 +45,16 @@
     test(S("1"), A(5));
     test(S("1234567890123456789012345678901234567890123456789012345678901234567890"), A(7));
     }
+
+    int alloc_count = test_alloc_base::alloc_count;
+    {
+    typedef test_allocator<char> A;
+    typedef std::basic_string<char, std::char_traits<char>, A> S;
+    S s1 ( "Twas brillig, and the slivy toves did gyre and gymbal in the wabe" );
+    S s2 (std::move(s1), A(1));
+    }
+    assert ( test_alloc_base::alloc_count == alloc_count );
+    
 #if __cplusplus >= 201103L
     {
     typedef min_allocator<char> A;
