Piotr Caban : msvcp60: Fixed basic_istream::getline(basic_string) implementation.

Alexandre Julliard julliard at winehq.org
Wed Nov 14 13:17:16 CST 2012


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

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Wed Nov 14 15:39:41 2012 +0100

msvcp60: Fixed basic_istream::getline(basic_string) implementation.

---

 dlls/msvcp60/ios.c    |    4 ++--
 dlls/msvcp60/string.c |    6 ++++--
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/dlls/msvcp60/ios.c b/dlls/msvcp60/ios.c
index 08a3848..02e903d 100644
--- a/dlls/msvcp60/ios.c
+++ b/dlls/msvcp60/ios.c
@@ -7617,9 +7617,9 @@ basic_istream_char* __cdecl basic_istream_char_getline_bstr_delim(
 
     TRACE("(%p %p %c)\n", istream, str, delim);
 
+    basic_string_char_clear(str);
     if(basic_istream_char_sentry_create(istream, TRUE)) {
         basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
-        basic_string_char_clear(str);
 
         c = basic_streambuf_char_sgetc(strbuf);
         for(; c!=(unsigned char)delim && c!=EOF; c = basic_streambuf_char_snextc(strbuf))
@@ -8909,9 +8909,9 @@ basic_istream_wchar* __cdecl basic_istream_wchar_getline_bstr_delim(
 
     TRACE("(%p %p %c)\n", istream, str, delim);
 
+    basic_string_wchar_clear(str);
     if(basic_istream_wchar_sentry_create(istream, TRUE)) {
         basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
-        basic_string_wchar_clear(str);
 
         c = basic_streambuf_wchar_sgetc(strbuf);
         for(; c!=delim && c!=WEOF; c = basic_streambuf_wchar_snextc(strbuf))
diff --git a/dlls/msvcp60/string.c b/dlls/msvcp60/string.c
index 803cd33..d2e1c81 100644
--- a/dlls/msvcp60/string.c
+++ b/dlls/msvcp60/string.c
@@ -153,7 +153,8 @@ void __thiscall basic_string_char__Eos(basic_string_char *this, MSVCP_size_t len
 
 void basic_string_char_clear(basic_string_char *this)
 {
-    basic_string_char__Eos(this, 0);
+    if(this->ptr)
+        basic_string_char__Eos(this, 0);
 }
 
 /* ?_Tidy@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AAEX_N at Z */
@@ -1865,7 +1866,8 @@ void __thiscall basic_string_wchar__Eos(basic_string_wchar *this, MSVCP_size_t l
 
 void basic_string_wchar_clear(basic_string_wchar *this)
 {
-    basic_string_wchar__Eos(this, 0);
+    if(this->ptr)
+        basic_string_wchar__Eos(this, 0);
 }
 
 /* ?_Tidy@?$basic_string at GU?$char_traits at G@std@@V?$allocator at G@2@@std@@AAEX_N at Z */




More information about the wine-cvs mailing list