Fix crash in Debug::SendCommand.

R=vitalyr@chromium.org
BUG=
TEST=

Review URL: http://codereview.chromium.org/6715029

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7310 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
podivilov@chromium.org 2011-03-22 18:02:23 +00:00
parent b6d288a051
commit 41f30cac90
2 changed files with 16 additions and 5 deletions

View File

@ -276,8 +276,12 @@ class EXPORT Debug {
static void SetMessageHandler(MessageHandler handler,
bool message_handler_thread = false);
static void SetMessageHandler2(MessageHandler2 handler);
// If no isolate is provided the default isolate is
// used.
static void SendCommand(const uint16_t* command, int length,
ClientData* client_data = NULL);
ClientData* client_data = NULL,
Isolate* isolate = NULL);
// Dispatch interface.
static void SetHostDispatchHandler(HostDispatchHandler handler,

View File

@ -4904,10 +4904,17 @@ void Debug::SetMessageHandler2(v8::Debug::MessageHandler2 handler) {
void Debug::SendCommand(const uint16_t* command, int length,
ClientData* client_data) {
if (!i::Isolate::Current()->IsInitialized()) return;
i::Isolate::Current()->debugger()->ProcessCommand(
i::Vector<const uint16_t>(command, length), client_data);
ClientData* client_data,
Isolate* isolate) {
// If no isolate is supplied, use the default isolate.
if (isolate != NULL) {
i::Isolate* internal_isolate = reinterpret_cast<i::Isolate*>(isolate);
internal_isolate->debugger()->ProcessCommand(
i::Vector<const uint16_t>(command, length), client_data);
} else {
i::Isolate::GetDefaultIsolateDebugger()->ProcessCommand(
i::Vector<const uint16_t>(command, length), client_data);
}
}