diff --git a/scripting/engine.cpp b/scripting/engine.cpp index ae67b469029..a28cff2983b 100644 --- a/scripting/engine.cpp +++ b/scripting/engine.cpp @@ -457,5 +457,20 @@ namespace mongo { ( x == 0 || ! isalpha( code[x-1] ) ) && ! isalpha( code[x+6] ); } + + const char * jsSkipWhiteSpace( const char * raw ){ + while ( raw[0] ){ + while (isspace(*raw)) { + raw++; + } + + if ( raw[0] != '/' || raw[1] != '/' ) + break; + + while ( raw[0] && raw[0] != '\n' ) + raw++; + } + return raw; + } } diff --git a/scripting/engine.h b/scripting/engine.h index e9ffd98caba..5b5c480ce77 100644 --- a/scripting/engine.h +++ b/scripting/engine.h @@ -234,5 +234,7 @@ namespace mongo { bool hasJSReturn( const string& s ); + const char * jsSkipWhiteSpace( const char * raw ); + extern ScriptEngine * globalScriptEngine; } diff --git a/scripting/engine_spidermonkey.cpp b/scripting/engine_spidermonkey.cpp index 3c5ed2b155b..f39d9d4f19c 100644 --- a/scripting/engine_spidermonkey.cpp +++ b/scripting/engine_spidermonkey.cpp @@ -427,18 +427,8 @@ namespace mongo { JSFunction * _compileFunction( const char * raw , JSObject * assoc , const char *& gcName ){ if ( ! assoc ) assoc = JS_GetGlobalObject( _context ); - - while ( raw[0] ){ - while (isspace(*raw)) { - raw++; - } - if ( raw[0] != '/' || raw[1] != '/' ) - break; - - while ( raw[0] && raw[0] != '\n' ) - raw++; - } + raw = jsSkipWhiteSpace( raw ); //cout << "RAW\n---\n" << raw << "\n---" << endl; diff --git a/scripting/engine_v8.cpp b/scripting/engine_v8.cpp index b883a45ca42..cb32f7c24cf 100644 --- a/scripting/engine_v8.cpp +++ b/scripting/engine_v8.cpp @@ -258,7 +258,7 @@ namespace mongo { } Local< v8::Function > V8Scope::__createFunction( const char * raw ){ - for(; isspace( *raw ); ++raw ); // skip whitespace + raw = jsSkipWhiteSpace( raw ); string code = raw; if ( !hasFunctionIdentifier( code ) ) { if ( code.find( "\n" ) == string::npos &&