Changeset 55415 in webkit


Ignore:
Timestamp:
Mar 2, 2010 10:34:28 AM (14 years ago)
Author:
kov@webkit.org
Message:

2010-03-02 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>

Reviewed by Alexey Proskuryakov.

Test plugin still has issues with releasing objects, and variants
https://bugs.webkit.org/show_bug.cgi?id=35587

Fix the conditions for releasing the variants after calling
invoke, and avoid having a number of objects leak.

  • DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp: (testDocumentOpen): (testWindowOpen):
Location:
trunk/WebKitTools
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebKitTools/ChangeLog

    r55411 r55415  
     12010-03-02  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
     2
     3        Reviewed by Alexey Proskuryakov.
     4
     5        Test plugin still has issues with releasing objects, and variants
     6        https://bugs.webkit.org/show_bug.cgi?id=35587
     7
     8        Fix the conditions for releasing the variants after calling
     9        invoke, and avoid having a number of objects leak.
     10
     11        * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
     12        (testDocumentOpen):
     13        (testWindowOpen):
     14
    1152010-03-02  Chris Jerdonek  <cjerdonek@webkit.org>
    216
  • trunk/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp

    r55392 r55415  
    712712    NPVariant docVariant;
    713713    browser->getproperty(npp, windowObject, documentId, &docVariant);
    714     if (docVariant.type != NPVariantType_Object)
    715         return false;
     714    if (docVariant.type != NPVariantType_Object) {
     715        browser->releaseobject(windowObject);
     716        return false;
     717    }
    716718
    717719    NPObject *documentObject = NPVARIANT_TO_OBJECT(docVariant);
     
    722724
    723725    NPVariant result;
    724     if (browser->invoke(npp, documentObject, openId, openArgs, 2, &result))
     726    if (!browser->invoke(npp, documentObject, openId, openArgs, 2, &result)) {
     727        browser->releaseobject(windowObject);
    725728        browser->releaseobject(documentObject);
    726 
    727     if (result.type == NPVariantType_Object) {
    728         pluginLogWithWindowObjectVariableArgs(windowObject, npp, "DOCUMENT OPEN SUCCESS");
    729         notifyTestCompletion(npp, result.value.objectValue);
    730         browser->releaseobject(result.value.objectValue);
    731         return true;
    732     }
    733 
    734     return false;
     729        return false;
     730    }
     731
     732    browser->releaseobject(documentObject);
     733
     734    if (result.type != NPVariantType_Object) {
     735        browser->releaseobject(windowObject);
     736        browser->releasevariantvalue(&result);
     737        return false;
     738    }
     739
     740    pluginLogWithWindowObjectVariableArgs(windowObject, npp, "DOCUMENT OPEN SUCCESS");
     741    notifyTestCompletion(npp, result.value.objectValue);
     742    browser->releaseobject(result.value.objectValue);
     743    browser->releaseobject(windowObject);
     744    return true;
    735745}
    736746
     
    749759
    750760    NPVariant result;
    751     bool didSucceed = browser->invoke(npp, windowObject, openId, openArgs, 2, &result);
    752     if (didSucceed && (result.type == NPVariantType_Object)) {
    753         pluginLogWithWindowObjectVariableArgs(windowObject, npp, "WINDOW OPEN SUCCESS");
    754         notifyTestCompletion(npp, result.value.objectValue);
    755         browser->releaseobject(result.value.objectValue);
    756         return true;
    757     }
    758     return false;
     761    if (!browser->invoke(npp, windowObject, openId, openArgs, 2, &result)) {
     762        browser->releaseobject(windowObject);
     763        return false;
     764    }
     765
     766    if (result.type != NPVariantType_Object) {
     767        browser->releaseobject(windowObject);
     768        browser->releasevariantvalue(&result);
     769        return false;
     770    }
     771
     772    pluginLogWithWindowObjectVariableArgs(windowObject, npp, "WINDOW OPEN SUCCESS");
     773    notifyTestCompletion(npp, result.value.objectValue);
     774    browser->releaseobject(result.value.objectValue);
     775    browser->releaseobject(windowObject);
     776    return true;
    759777}
    760778
Note: See TracChangeset for help on using the changeset viewer.