| Index: o3d/gpu_plugin/command_buffer.cc
|
| ===================================================================
|
| --- o3d/gpu_plugin/command_buffer.cc (revision 26879)
|
| +++ o3d/gpu_plugin/command_buffer.cc (working copy)
|
| @@ -13,7 +13,8 @@
|
| get_offset_(0),
|
| put_offset_(0),
|
| token_(0),
|
| - error_(ERROR_NO_ERROR) {
|
| + parse_error_(0),
|
| + error_status_(false) {
|
| // Element zero is always NULL.
|
| registered_objects_.push_back(NPObjectPointer<NPObject>());
|
| }
|
| @@ -22,6 +23,12 @@
|
| }
|
|
|
| bool CommandBuffer::Initialize(int32 size) {
|
| + // Check the size will not overflow when it is converted from count of int32s
|
| + // to count of bytes.
|
| + int32 num_bytes = static_cast<int32>(size * sizeof(int32));
|
| + if (num_bytes / sizeof(int32) != size)
|
| + return false;
|
| +
|
| if (shared_memory_.Get())
|
| return false;
|
|
|
| @@ -41,7 +48,7 @@
|
| }
|
|
|
| NPObjectPointer<NPObject> result;
|
| - if (!NPInvoke(npp_, system, "createSharedMemory", size,
|
| + if (!NPInvoke(npp_, system, "createSharedMemory", num_bytes,
|
| &result)) {
|
| return false;
|
| }
|
| @@ -148,15 +155,18 @@
|
| }
|
|
|
| NPObjectPointer<NPObject> CommandBuffer::GetRegisteredObject(int32 handle) {
|
| - DCHECK_GE(handle, 0);
|
| - DCHECK_LT(static_cast<size_t>(handle), registered_objects_.size());
|
| + if (handle < 0)
|
| + return NPObjectPointer<NPObject>();
|
|
|
| + if (static_cast<size_t>(handle) >= registered_objects_.size())
|
| + return NPObjectPointer<NPObject>();
|
| +
|
| return registered_objects_[handle];
|
| }
|
|
|
| -int32 CommandBuffer::ResetError() {
|
| - int32 last_error = error_;
|
| - error_ = ERROR_NO_ERROR;
|
| +int32 CommandBuffer::ResetParseError() {
|
| + int32 last_error = parse_error_;
|
| + parse_error_ = 0;
|
| return last_error;
|
| }
|
|
|
|
|