Piotr Caban : msvcp60: Fixed handling of empty strings.

Alexandre Julliard julliard at winehq.org
Mon Nov 19 13:38:37 CST 2012


Module: wine
Branch: master
Commit: 95c4284822853c1a0c7227aa38174e61337a07fb
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=95c4284822853c1a0c7227aa38174e61337a07fb

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Sun Nov 18 21:44:08 2012 +0100

msvcp60: Fixed handling of empty strings.

---

 dlls/msvcp60/string.c |   31 +++++++++++++++++++------------
 1 files changed, 19 insertions(+), 12 deletions(-)

diff --git a/dlls/msvcp60/string.c b/dlls/msvcp60/string.c
index d2e1c81..2b890fa 100644
--- a/dlls/msvcp60/string.c
+++ b/dlls/msvcp60/string.c
@@ -236,7 +236,8 @@ void __thiscall basic_string_char__Split(basic_string_char *this)
     len = this->size;
     basic_string_char__Tidy(this, TRUE);
     if(basic_string_char__Grow(this, len, FALSE)) {
-        char_traits_char__Copy_s(this->ptr, this->res, ptr, len);
+        if(ptr)
+            char_traits_char__Copy_s(this->ptr, this->res, ptr, len);
         basic_string_char__Eos(this, len);
     }
 }
@@ -345,8 +346,8 @@ basic_string_char* __thiscall basic_string_char_assign_substr(
         basic_string_char_erase(this, pos+len, basic_string_char_npos);
         basic_string_char_erase(this, 0, pos);
     } else if(basic_string_char__Grow(this, len, FALSE)) {
-        char_traits_char__Copy_s(this->ptr, this->res,
-                assign->ptr+pos, len);
+        if(assign->ptr)
+            char_traits_char__Copy_s(this->ptr, this->res, assign->ptr+pos, len);
         basic_string_char__Eos(this, len);
     }
 
@@ -1149,8 +1150,9 @@ basic_string_char* __thiscall basic_string_char_append_substr(basic_string_char
         _Xlen();
 
     if(basic_string_char__Grow(this, this->size+count, FALSE)) {
-        char_traits_char__Copy_s(this->ptr+this->size,
-                this->res-this->size, append->ptr+offset, count);
+        if(append->ptr)
+            char_traits_char__Copy_s(this->ptr+this->size, this->res-this->size,
+                    append->ptr+offset, count);
         basic_string_char__Eos(this, this->size+count);
     }
 
@@ -1763,7 +1765,8 @@ MSVCP_size_t __thiscall basic_string_char_copy(const basic_string_char *this,
         _Xran();
     if(count > this->size-off)
         count = this->size-off;
-    char_traits_char__Copy_s(dest, count, this->ptr+off, count);
+    if(this->ptr)
+        char_traits_char__Copy_s(dest, count, this->ptr+off, count);
     return count;
 }
 
@@ -1949,7 +1952,8 @@ void __thiscall basic_string_wchar__Split(basic_string_wchar *this)
     len = this->size;
     basic_string_wchar__Tidy(this, TRUE);
     if(basic_string_wchar__Grow(this, len, FALSE)) {
-        char_traits_wchar__Copy_s(this->ptr, this->res, ptr, len);
+        if(ptr)
+            char_traits_wchar__Copy_s(this->ptr, this->res, ptr, len);
         basic_string_wchar__Eos(this, len);
     }
 }
@@ -2058,8 +2062,9 @@ basic_string_wchar* __thiscall basic_string_wchar_assign_substr(
         basic_string_wchar_erase(this, pos+len, basic_string_wchar_npos);
         basic_string_wchar_erase(this, 0, pos);
     } else if(basic_string_wchar__Grow(this, len, FALSE)) {
-        char_traits_wchar__Copy_s(this->ptr, this->res,
-                assign->ptr+pos, len);
+        if(assign->ptr)
+            char_traits_wchar__Copy_s(this->ptr, this->res,
+                    assign->ptr+pos, len);
         basic_string_wchar__Eos(this, len);
     }
 
@@ -2861,8 +2866,9 @@ basic_string_wchar* __thiscall basic_string_wchar_append_substr(basic_string_wch
         _Xlen();
 
     if(basic_string_wchar__Grow(this, this->size+count, FALSE)) {
-        char_traits_wchar__Copy_s(this->ptr+this->size,
-                this->res-this->size, append->ptr+offset, count);
+        if(append->ptr)
+            char_traits_wchar__Copy_s(this->ptr+this->size, this->res-this->size,
+                    append->ptr+offset, count);
         basic_string_wchar__Eos(this, this->size+count);
     }
 
@@ -3475,7 +3481,8 @@ MSVCP_size_t __thiscall basic_string_wchar_copy(const basic_string_wchar *this,
         _Xran();
     if(count > this->size-off)
         count = this->size-off;
-    char_traits_wchar__Copy_s(dest, count, this->ptr+off, count);
+    if(this->ptr)
+        char_traits_wchar__Copy_s(dest, count, this->ptr+off, count);
     return count;
 }
 




More information about the wine-cvs mailing list