Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(32)

Side by Side Diff: ppapi/native_client/src/shared/ppapi_proxy/browser_callback.cc

Issue 9724007: WebSocket Pepper API: fix data corruption at ReceiveMessage in NaCl (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: remove flaky prefix Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "native_client/src/shared/ppapi_proxy/browser_callback.h" 5 #include "native_client/src/shared/ppapi_proxy/browser_callback.h"
6 6
7 #include <new> 7 #include <new>
8 8
9 #include "native_client/src/include/nacl_macros.h" 9 #include "native_client/src/include/nacl_macros.h"
10 #include "native_client/src/include/nacl_scoped_ptr.h" 10 #include "native_client/src/include/nacl_scoped_ptr.h"
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 129
130 if (bytes_to_read > 0 && buffer != NULL) { 130 if (bytes_to_read > 0 && buffer != NULL) {
131 *buffer = new(std::nothrow) char[bytes_to_read]; 131 *buffer = new(std::nothrow) char[bytes_to_read];
132 if (*buffer == NULL) // new failed. 132 if (*buffer == NULL) // new failed.
133 return PP_BlockUntilComplete(); 133 return PP_BlockUntilComplete();
134 remote_callback->read_buffer = *buffer; 134 remote_callback->read_buffer = *buffer;
135 } 135 }
136 if (var) 136 if (var)
137 *var = &remote_callback->read_var; 137 *var = &remote_callback->read_var;
138 138
139 // If caller requires to copy data at completion, the callback must be
140 // asynchronous. Because the copy is performed in RunRemoteCallback.
141 if ((bytes_to_read > 0 && buffer != NULL) || var)
142 return PP_MakeCompletionCallback(
143 RunRemoteCallback, remote_callback.release());
dmichael (off chromium) 2012/03/21 19:16:47 This is going to affect URLLoader::ReadResponseBod
144
139 return PP_MakeOptionalCompletionCallback( 145 return PP_MakeOptionalCompletionCallback(
140 RunRemoteCallback, remote_callback.release()); 146 RunRemoteCallback, remote_callback.release());
141 } 147 }
142 148
143 struct PP_CompletionCallback MakeRemoteCompletionCallback( 149 struct PP_CompletionCallback MakeRemoteCompletionCallback(
144 NaClSrpcChannel* srpc_channel, 150 NaClSrpcChannel* srpc_channel,
145 int32_t callback_id, 151 int32_t callback_id,
146 int32_t bytes_to_read, 152 int32_t bytes_to_read,
147 char** buffer, 153 char** buffer,
148 CheckResultFunc check_result_func, 154 CheckResultFunc check_result_func,
(...skipping 26 matching lines...) Expand all
175 return MakeRemoteCompletionCallback(srpc_channel, callback_id, 0, NULL); 181 return MakeRemoteCompletionCallback(srpc_channel, callback_id, 0, NULL);
176 } 182 }
177 183
178 void DeleteRemoteCallbackInfo(struct PP_CompletionCallback callback) { 184 void DeleteRemoteCallbackInfo(struct PP_CompletionCallback callback) {
179 nacl::scoped_ptr<RemoteCallbackInfo> remote_callback( 185 nacl::scoped_ptr<RemoteCallbackInfo> remote_callback(
180 reinterpret_cast<RemoteCallbackInfo*>(callback.user_data)); 186 reinterpret_cast<RemoteCallbackInfo*>(callback.user_data));
181 nacl::scoped_array<char> read_buffer(remote_callback->read_buffer); 187 nacl::scoped_array<char> read_buffer(remote_callback->read_buffer);
182 } 188 }
183 189
184 } // namespace ppapi_proxy 190 } // namespace ppapi_proxy
OLDNEW
« no previous file with comments | « chrome/test/ui/ppapi_uitest.cc ('k') | ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_websocket_rpc_server.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698