Index: sandbox/win/src/win_utils.cc |
diff --git a/sandbox/win/src/win_utils.cc b/sandbox/win/src/win_utils.cc |
index d2b507d3e6a848e79bb2016bf6541f5a18bb88bc..2ff1b7343c23d0222677625ff753357b0d86a378 100644 |
--- a/sandbox/win/src/win_utils.cc |
+++ b/sandbox/win/src/win_utils.cc |
@@ -355,13 +355,14 @@ bool GetPathFromHandle(HANDLE handle, base::string16* path) { |
OBJECT_NAME_INFORMATION* name = &initial_buffer; |
ULONG size = sizeof(initial_buffer); |
// Query the name information a first time to get the size of the name. |
+ // Windows XP requires that the size of the buffer passed in here be != 0. |
NTSTATUS status = NtQueryObject(handle, ObjectNameInformation, name, size, |
&size); |
- scoped_ptr<OBJECT_NAME_INFORMATION> name_ptr; |
+ scoped_ptr<BYTE[]> name_ptr; |
if (size) { |
- name = reinterpret_cast<OBJECT_NAME_INFORMATION*>(new BYTE[size]); |
- name_ptr.reset(name); |
+ name_ptr.reset(new BYTE[size]); |
+ name = reinterpret_cast<OBJECT_NAME_INFORMATION*>(name_ptr.get()); |
// Query the name information a second time to get the name of the |
// object referenced by the handle. |