Alexandre Julliard : server: Store debugging output strings as client_ptr_t instead of void pointers.

Alexandre Julliard julliard at winehq.org
Tue Dec 30 06:56:55 CST 2008


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

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Mon Dec 29 17:12:20 2008 +0100

server: Store debugging output strings as client_ptr_t instead of void pointers.

---

 dlls/kernel32/debugger.c       |    6 +++---
 include/wine/server_protocol.h |   12 ++++++------
 server/protocol.def            |   10 +++++-----
 server/trace.c                 |   15 +++++++++------
 4 files changed, 23 insertions(+), 20 deletions(-)

diff --git a/dlls/kernel32/debugger.c b/dlls/kernel32/debugger.c
index b50f0c3..645fca9 100644
--- a/dlls/kernel32/debugger.c
+++ b/dlls/kernel32/debugger.c
@@ -112,7 +112,7 @@ BOOL WINAPI WaitForDebugEvent(
                 event->u.UnloadDll.lpBaseOfDll = wine_server_get_ptr( data.info.unload_dll.base );
                 break;
             case OUTPUT_DEBUG_STRING_EVENT:
-                event->u.DebugString.lpDebugStringData  = data.info.output_string.string;
+                event->u.DebugString.lpDebugStringData  = wine_server_get_ptr( data.info.output_string.string );
                 event->u.DebugString.fUnicode           = data.info.output_string.unicode;
                 event->u.DebugString.nDebugStringLength = data.info.output_string.length;
                 break;
@@ -237,7 +237,7 @@ void WINAPI OutputDebugStringA( LPCSTR str )
 {
     SERVER_START_REQ( output_debug_string )
     {
-        req->string  = (void *)str;
+        req->string  = wine_server_client_ptr( str );
         req->unicode = 0;
         req->length  = strlen(str) + 1;
         wine_server_call( req );
@@ -264,7 +264,7 @@ void WINAPI OutputDebugStringW( LPCWSTR str )
 {
     SERVER_START_REQ( output_debug_string )
     {
-        req->string  = (void *)str;
+        req->string  = wine_server_client_ptr( str );
         req->unicode = 1;
         req->length  = (lstrlenW(str) + 1) * sizeof(WCHAR);
         wine_server_call( req );
diff --git a/include/wine/server_protocol.h b/include/wine/server_protocol.h
index d538d80..b263a2d 100644
--- a/include/wine/server_protocol.h
+++ b/include/wine/server_protocol.h
@@ -97,9 +97,9 @@ struct debug_event_unload_dll
 };
 struct debug_event_output_string
 {
-    void       *string;
-    int         unicode;
-    int         length;
+    client_ptr_t string;
+    int          unicode;
+    data_size_t  length;
 };
 struct debug_event_rip_info
 {
@@ -1873,9 +1873,9 @@ struct get_exception_status_reply
 struct output_debug_string_request
 {
     struct request_header __header;
-    void*         string;
+    data_size_t   length;
+    client_ptr_t  string;
     int           unicode;
-    int           length;
 };
 struct output_debug_string_reply
 {
@@ -5052,6 +5052,6 @@ union generic_reply
     struct set_window_layered_info_reply set_window_layered_info_reply;
 };
 
-#define SERVER_PROTOCOL_VERSION 357
+#define SERVER_PROTOCOL_VERSION 358
 
 #endif /* __WINE_WINE_SERVER_PROTOCOL_H */
diff --git a/server/protocol.def b/server/protocol.def
index 69d5928..6f8dd2c 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -113,9 +113,9 @@ struct debug_event_unload_dll
 };
 struct debug_event_output_string
 {
-    void       *string;     /* string to display (in debugged process address space) */
-    int         unicode;    /* is it Unicode? */
-    int         length;     /* string length */
+    client_ptr_t string;     /* string to display (in debugged process address space) */
+    int          unicode;    /* is it Unicode? */
+    data_size_t  length;     /* string length */
 };
 struct debug_event_rip_info
 {
@@ -1462,9 +1462,9 @@ enum char_info_mode
 
 /* Send an output string to the debugger */
 @REQ(output_debug_string)
-    void*         string;      /* string to display (in debugged process address space) */
+    data_size_t   length;      /* string length */
+    client_ptr_t  string;      /* string to display (in debugged process address space) */
     int           unicode;     /* is it Unicode? */
-    int           length;      /* string length */
 @END
 
 
diff --git a/server/trace.c b/server/trace.c
index 3cafe4a..f63e20a 100644
--- a/server/trace.c
+++ b/server/trace.c
@@ -485,9 +485,10 @@ static void dump_varargs_debug_event( data_size_t size )
         fputc( '}', stderr );
         break;
     case OUTPUT_DEBUG_STRING_EVENT:
-        fprintf( stderr, "{output_string,data=%p,unicode=%d,len=%d}",
-                 event->info.output_string.string, event->info.output_string.unicode,
-                 event->info.output_string.length );
+        fprintf( stderr, "{output_string,string=" );
+        dump_uint64( &event->info.output_string.string );
+        fprintf( stderr, ",unicode=%d,len=%u}",
+                 event->info.output_string.unicode, event->info.output_string.length );
         break;
     case RIP_EVENT:
         fprintf( stderr, "{rip,err=%d,type=%d}",
@@ -1922,9 +1923,11 @@ static void dump_get_exception_status_reply( const struct get_exception_status_r
 
 static void dump_output_debug_string_request( const struct output_debug_string_request *req )
 {
-    fprintf( stderr, " string=%p,", req->string );
-    fprintf( stderr, " unicode=%d,", req->unicode );
-    fprintf( stderr, " length=%d", req->length );
+    fprintf( stderr, " length=%u,", req->length );
+    fprintf( stderr, " string=" );
+    dump_uint64( &req->string );
+    fprintf( stderr, "," );
+    fprintf( stderr, " unicode=%d", req->unicode );
 }
 
 static void dump_continue_debug_event_request( const struct continue_debug_event_request *req )




More information about the wine-cvs mailing list