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

Side by Side Diff: sandbox/win/src/sharedmem_ipc_client.cc

Issue 172853002: Fix a compilation issue when building with VS2013 and optimization set to "max". (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Finally after a lot of "Upload got a 500 response: 500" Created 6 years, 10 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 <string.h> 5 #include <string.h>
6 #include "sandbox/win/src/sharedmem_ipc_client.h" 6 #include "sandbox/win/src/sharedmem_ipc_client.h"
7 #include "sandbox/win/src/sandbox.h" 7 #include "sandbox/win/src/sandbox.h"
8 #include "sandbox/win/src/crosscall_client.h" 8 #include "sandbox/win/src/crosscall_client.h"
9 #include "sandbox/win/src/crosscall_params.h" 9 #include "sandbox/win/src/crosscall_params.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 13 matching lines...) Expand all
24 control_->channels[ix].channel_base; 24 control_->channels[ix].channel_base;
25 } 25 }
26 26
27 // If we need to cancel an IPC before issuing DoCall 27 // If we need to cancel an IPC before issuing DoCall
28 // our client should call FreeBuffer with the same pointer 28 // our client should call FreeBuffer with the same pointer
29 // returned by GetBuffer. 29 // returned by GetBuffer.
30 void SharedMemIPCClient::FreeBuffer(void* buffer) { 30 void SharedMemIPCClient::FreeBuffer(void* buffer) {
31 size_t num = ChannelIndexFromBuffer(buffer); 31 size_t num = ChannelIndexFromBuffer(buffer);
32 ChannelControl* channel = control_->channels; 32 ChannelControl* channel = control_->channels;
33 LONG result = ::InterlockedExchange(&channel[num].state, kFreeChannel); 33 LONG result = ::InterlockedExchange(&channel[num].state, kFreeChannel);
34 DCHECK(kFreeChannel != result); 34 DCHECK_NE(kFreeChannel, static_cast<ChannelState>(result));
35 result; 35 result;
36 } 36 }
37 37
38 // The constructor simply casts the shared memory to the internal 38 // The constructor simply casts the shared memory to the internal
39 // structures. This is a cheap step that is why this IPC object can 39 // structures. This is a cheap step that is why this IPC object can
40 // and should be constructed per call. 40 // and should be constructed per call.
41 SharedMemIPCClient::SharedMemIPCClient(void* shared_mem) 41 SharedMemIPCClient::SharedMemIPCClient(void* shared_mem)
42 : control_(reinterpret_cast<IPCControl*>(shared_mem)) { 42 : control_(reinterpret_cast<IPCControl*>(shared_mem)) {
43 first_base_ = reinterpret_cast<char*>(shared_mem) + 43 first_base_ = reinterpret_cast<char*>(shared_mem) +
44 control_->channels[0].channel_base; 44 control_->channels[0].channel_base;
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 return 0; 138 return 0;
139 } 139 }
140 } 140 }
141 while (true); 141 while (true);
142 } 142 }
143 143
144 // Find out which channel we are from the pointer returned by GetBuffer. 144 // Find out which channel we are from the pointer returned by GetBuffer.
145 size_t SharedMemIPCClient::ChannelIndexFromBuffer(const void* buffer) { 145 size_t SharedMemIPCClient::ChannelIndexFromBuffer(const void* buffer) {
146 ptrdiff_t d = reinterpret_cast<const char*>(buffer) - first_base_; 146 ptrdiff_t d = reinterpret_cast<const char*>(buffer) - first_base_;
147 size_t num = d/kIPCChannelSize; 147 size_t num = d/kIPCChannelSize;
148 DCHECK(num < control_->channels_count); 148 DCHECK_LT(num, control_->channels_count);
149 return (num); 149 return (num);
150 } 150 }
151 151
152 } // namespace sandbox 152 } // namespace sandbox
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698