Ignore:
Timestamp:
Sep 21, 2008, 5:42:11 PM (17 years ago)
Author:
Darin Adler
Message:

2008-09-21 Darin Adler <Darin Adler>

Reviewed by Cameron Zwarich.

  • fix crash logging into Gmail due to recent Arguments change
  • kjs/Arguments.cpp: (JSC::Arguments::Arguments): Fix window where mark() function could see d->extraArguments with uninitialized contents. (JSC::Arguments::mark): Check d->extraArguments for 0 to handle two cases: 1) Inside the constructor before it's initialized. 2) numArguments <= numParameters.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/kjs/Arguments.cpp

    r36749 r36753  
    6565    if (d->numArguments > d->numParameters) {
    6666        unsigned numExtraArguments = d->numArguments - d->numParameters;
    67         d->extraArguments.set(new JSValue*[numExtraArguments]);
     67        JSValue** extraArguments = new JSValue*[numExtraArguments];
    6868        for (unsigned i = 0; i < numExtraArguments; ++i)
    69             d->extraArguments[i] = argv[d->numParameters + i].getJSValue();
     69            extraArguments[i] = argv[d->numParameters + i].getJSValue();
     70        d->extraArguments.set(extraArguments);
    7071    }
    7172}
     
    7980    JSObject::mark();
    8081
    81     unsigned numExtraArguments = d->numArguments - d->numParameters;
    82     for (unsigned i = 0; i < numExtraArguments; ++i) {
    83         if (!d->extraArguments[i]->marked())
    84             d->extraArguments[i]->mark();
     82    if (d->extraArguments) {
     83        unsigned numExtraArguments = d->numArguments - d->numParameters;
     84        for (unsigned i = 0; i < numExtraArguments; ++i) {
     85            if (!d->extraArguments[i]->marked())
     86                d->extraArguments[i]->mark();
     87        }
    8588    }
    8689
Note: See TracChangeset for help on using the changeset viewer.