Changeset 122452 in webkit


Ignore:
Timestamp:
Jul 12, 2012 6:39:22 AM (12 years ago)
Author:
commit-queue@webkit.org
Message:

[EFL] [WK2] regression(r122411) Crashes in Ewk_View
https://bugs.webkit.org/show_bug.cgi?id=91068

Patch by Christophe Dumez <Christophe Dumez> on 2012-07-12
Reviewed by Kentaro Hara.

Avoid using calloc() to allocate memory for structures
and use new operator instead. calloc() causes unwanted
behavior when allocing a structure which contains
non-pointer types (e.g. a HashMap) and leads to
crashes.

  • UIProcess/API/efl/ewk_context.cpp:

(_Ewk_Context::_Ewk_Context):

  • UIProcess/API/efl/ewk_intent.cpp:

(_Ewk_Intent):
(_Ewk_Intent::_Ewk_Intent):
(ewk_intent_unref):
(ewk_intent_new):

  • UIProcess/API/efl/ewk_intent_service.cpp:

(_Ewk_Intent_Service):
(_Ewk_Intent_Service::_Ewk_Intent_Service):
(ewk_intent_service_unref):
(ewk_intent_service_new):

  • UIProcess/API/efl/ewk_navigation_policy_decision.cpp:

(_Ewk_Navigation_Policy_Decision):
(_Ewk_Navigation_Policy_Decision::_Ewk_Navigation_Policy_Decision):
(ewk_navigation_policy_decision_free):
(ewk_navigation_policy_decision_new):

  • UIProcess/API/efl/ewk_url_request.cpp:

(_Ewk_Url_Request):
(_Ewk_Url_Request::_Ewk_Url_Request):
(ewk_url_request_unref):
(ewk_url_request_new):

  • UIProcess/API/efl/ewk_url_response.cpp:

(_Ewk_Url_Response):
(_Ewk_Url_Response::_Ewk_Url_Response):
(ewk_url_response_unref):
(ewk_url_response_new):

  • UIProcess/API/efl/ewk_view.cpp:

(_Ewk_View_Private_Data):
(_Ewk_View_Private_Data::_Ewk_View_Private_Data):
(_ewk_view_priv_new):
(_ewk_view_priv_del):

  • UIProcess/API/efl/ewk_web_error.cpp:

(_Ewk_Web_Error):
(_Ewk_Web_Error::_Ewk_Web_Error):
(ewk_web_error_free):
(ewk_web_error_new):

  • UIProcess/API/efl/ewk_web_resource.cpp:

(_Ewk_Web_Resource):
(_Ewk_Web_Resource::_Ewk_Web_Resource):
(ewk_web_resource_unref):
(ewk_web_resource_new):

Location:
trunk/Source/WebKit2
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r122438 r122452  
     12012-07-12  Christophe Dumez  <christophe.dumez@intel.com>
     2
     3        [EFL] [WK2] regression(r122411) Crashes in Ewk_View
     4        https://bugs.webkit.org/show_bug.cgi?id=91068
     5
     6        Reviewed by Kentaro Hara.
     7
     8        Avoid using calloc() to allocate memory for structures
     9        and use new operator instead. calloc() causes unwanted
     10        behavior when allocing a structure which contains
     11        non-pointer types (e.g. a HashMap) and leads to
     12        crashes.
     13
     14        * UIProcess/API/efl/ewk_context.cpp:
     15        (_Ewk_Context::_Ewk_Context):
     16        * UIProcess/API/efl/ewk_intent.cpp:
     17        (_Ewk_Intent):
     18        (_Ewk_Intent::_Ewk_Intent):
     19        (ewk_intent_unref):
     20        (ewk_intent_new):
     21        * UIProcess/API/efl/ewk_intent_service.cpp:
     22        (_Ewk_Intent_Service):
     23        (_Ewk_Intent_Service::_Ewk_Intent_Service):
     24        (ewk_intent_service_unref):
     25        (ewk_intent_service_new):
     26        * UIProcess/API/efl/ewk_navigation_policy_decision.cpp:
     27        (_Ewk_Navigation_Policy_Decision):
     28        (_Ewk_Navigation_Policy_Decision::_Ewk_Navigation_Policy_Decision):
     29        (ewk_navigation_policy_decision_free):
     30        (ewk_navigation_policy_decision_new):
     31        * UIProcess/API/efl/ewk_url_request.cpp:
     32        (_Ewk_Url_Request):
     33        (_Ewk_Url_Request::_Ewk_Url_Request):
     34        (ewk_url_request_unref):
     35        (ewk_url_request_new):
     36        * UIProcess/API/efl/ewk_url_response.cpp:
     37        (_Ewk_Url_Response):
     38        (_Ewk_Url_Response::_Ewk_Url_Response):
     39        (ewk_url_response_unref):
     40        (ewk_url_response_new):
     41        * UIProcess/API/efl/ewk_view.cpp:
     42        (_Ewk_View_Private_Data):
     43        (_Ewk_View_Private_Data::_Ewk_View_Private_Data):
     44        (_ewk_view_priv_new):
     45        (_ewk_view_priv_del):
     46        * UIProcess/API/efl/ewk_web_error.cpp:
     47        (_Ewk_Web_Error):
     48        (_Ewk_Web_Error::_Ewk_Web_Error):
     49        (ewk_web_error_free):
     50        (ewk_web_error_new):
     51        * UIProcess/API/efl/ewk_web_resource.cpp:
     52        (_Ewk_Web_Resource):
     53        (_Ewk_Web_Resource::_Ewk_Web_Resource):
     54        (ewk_web_resource_unref):
     55        (ewk_web_resource_new):
     56
    1572012-07-11  Andras Becsi  <andras.becsi@nokia.com>
    258
  • trunk/Source/WebKit2/UIProcess/API/efl/ewk_context.cpp

    r122299 r122452  
    3636
    3737    _Ewk_Context(WKContextRef contextRef)
    38     {
    39         this->context = contextRef;
    40     }
     38        : context(contextRef)
     39    { }
    4140};
    4241
  • trunk/Source/WebKit2/UIProcess/API/efl/ewk_intent.cpp

    r121733 r122452  
    5151    const char* type;
    5252    const char* service;
     53
     54    _Ewk_Intent(WKIntentDataRef intentRef)
     55        : __ref(1)
     56#if ENABLE(WEB_INTENTS)
     57        , wkIntent(intentRef)
     58#endif
     59        , action(0)
     60        , type(0)
     61        , service(0)
     62    {
     63    }
    5364};
    5465
     
    8394    eina_stringshare_del(intent->type);
    8495    eina_stringshare_del(intent->service);
    85     free(intent);
     96    delete intent;
    8697#endif
    8798}
     
    193204    EINA_SAFETY_ON_NULL_RETURN_VAL(intentData, 0);
    194205
    195     Ewk_Intent* ewkIntent = static_cast<Ewk_Intent*>(calloc(1, sizeof(Ewk_Intent)));
    196     ewkIntent->__ref = 1;
    197     ewkIntent->wkIntent = intentData;
    198 
    199     return ewkIntent;
     206    return new Ewk_Intent(intentData);
    200207}
    201208
  • trunk/Source/WebKit2/UIProcess/API/efl/ewk_intent_service.cpp

    r121732 r122452  
    5151    const char* title;
    5252    const char* disposition;
     53
     54    _Ewk_Intent_Service(WKIntentServiceInfoRef serviceRef)
     55        : __ref(1)
     56#if ENABLE(WEB_INTENTS_TAG)
     57        , wkService(serviceRef)
     58#endif
     59        , action(0)
     60        , type(0)
     61        , href(0)
     62        , title(0)
     63        , disposition(0)
     64    { }
    5365};
    5466
     
    8597    eina_stringshare_del(service->title);
    8698    eina_stringshare_del(service->disposition);
    87     free(service);
     99    delete service;
    88100#endif
    89101}
     
    169181    EINA_SAFETY_ON_NULL_RETURN_VAL(wkService, 0);
    170182
    171     Ewk_Intent_Service* ewkIntentService = static_cast<Ewk_Intent_Service*>(calloc(1, sizeof(Ewk_Intent_Service)));
    172     ewkIntentService->__ref = 1;
    173     ewkIntentService->wkService = wkService;
    174 
    175     return ewkIntentService;
     183    return new Ewk_Intent_Service(wkService);
    176184}
    177185#endif
  • trunk/Source/WebKit2/UIProcess/API/efl/ewk_navigation_policy_decision.cpp

    r122426 r122452  
    4848    Ewk_Url_Request* request;
    4949    const char* frameName;
     50
     51    _Ewk_Navigation_Policy_Decision(WKFramePolicyListenerRef _listener, Ewk_Navigation_Type _navigationType, Event_Mouse_Button _mouseButton, Event_Modifier_Keys _modifiers, Ewk_Url_Request* _request, const char* _frameName)
     52        : listener(_listener)
     53        , actedUponByClient(false)
     54        , navigationType(_navigationType)
     55        , mouseButton(_mouseButton)
     56        , modifiers(_modifiers)
     57        , request(_request)
     58        , frameName(eina_stringshare_add(_frameName))
     59    { }
    5060};
    5161
     
    6070    ewk_url_request_unref(decision->request);
    6171    eina_stringshare_del(decision->frameName);
    62     free(decision);
     72    delete decision;
    6373}
    6474
     
    144154Ewk_Navigation_Policy_Decision* ewk_navigation_policy_decision_new(WKFrameNavigationType navigationType, WKEventMouseButton mouseButton, WKEventModifiers modifiers, WKURLRequestRef request, const char* frameName, WKFramePolicyListenerRef listener)
    145155{
    146     Ewk_Navigation_Policy_Decision* ewkPolicyDecision = static_cast<Ewk_Navigation_Policy_Decision*>(calloc(1, sizeof(Ewk_Navigation_Policy_Decision)));
    147     ewkPolicyDecision->listener = listener;
    148     ewkPolicyDecision->mouseButton = static_cast<Event_Mouse_Button>(mouseButton);
    149     ewkPolicyDecision->modifiers = static_cast<Event_Modifier_Keys>(modifiers);
    150     ewkPolicyDecision->navigationType = static_cast<Ewk_Navigation_Type>(navigationType);
    151     ewkPolicyDecision->request = ewk_url_request_new(request);
    152     ewkPolicyDecision->frameName = eina_stringshare_add(frameName);
    153 
    154     return ewkPolicyDecision;
     156    return new Ewk_Navigation_Policy_Decision(listener,
     157                                              static_cast<Ewk_Navigation_Type>(navigationType),
     158                                              static_cast<Event_Mouse_Button>(mouseButton),
     159                                              static_cast<Event_Modifier_Keys>(modifiers),
     160                                              ewk_url_request_new(request),
     161                                              frameName);
    155162}
  • trunk/Source/WebKit2/UIProcess/API/efl/ewk_url_request.cpp

    r121889 r122452  
    4949    const char* first_party;
    5050    const char* http_method;
     51
     52    _Ewk_Url_Request(WKURLRequestRef requestRef)
     53        : __ref(1)
     54        , wkRequest(requestRef)
     55        , url(0)
     56        , first_party(0)
     57        , http_method(0)
     58    { }
    5159};
    5260
     
    7886    eina_stringshare_del(request->first_party);
    7987    eina_stringshare_del(request->http_method);
    80     free(request);
     88    delete request;
    8189}
    8290
     
    120128    EINA_SAFETY_ON_NULL_RETURN_VAL(wkUrlRequest, 0);
    121129
    122     Ewk_Url_Request* ewkUrlRequest = static_cast<Ewk_Url_Request*>(calloc(1, sizeof(Ewk_Url_Request)));
    123     ewkUrlRequest->__ref = 1;
    124     ewkUrlRequest->wkRequest = wkUrlRequest;
    125 
    126     return ewkUrlRequest;
     130    return new Ewk_Url_Request(wkUrlRequest);
    127131}
  • trunk/Source/WebKit2/UIProcess/API/efl/ewk_url_response.cpp

    r122411 r122452  
    4040    const char* url;
    4141    const char* mimeType;
     42
     43    _Ewk_Url_Response(const WebCore::ResourceResponse& _coreResponse)
     44        : __ref(1)
     45        , coreResponse(_coreResponse)
     46        , url(0)
     47        , mimeType(0)
     48    { }
    4249};
    4350
     
    5764    eina_stringshare_del(response->url);
    5865    eina_stringshare_del(response->mimeType);
    59     free(response);
     66    delete response;
    6067}
    6168
     
    93100Ewk_Url_Response* ewk_url_response_new(const WebCore::ResourceResponse& coreResponse)
    94101{
    95     Ewk_Url_Response* ewkUrlResponse = static_cast<Ewk_Url_Response*>(calloc(1, sizeof(Ewk_Url_Response)));
    96     ewkUrlResponse->__ref = 1;
    97     ewkUrlResponse->coreResponse = coreResponse;
    98 
    99     return ewkUrlResponse;
     102    return new Ewk_Url_Response(coreResponse);
    100103}
  • trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp

    r122426 r122452  
    5151    const char* title;
    5252    LoadingResourcesMap loadingResourcesMap;
     53
     54    _Ewk_View_Private_Data()
     55        : uri(0)
     56        , title(0)
     57    { }
    5358};
    5459
     
    261266static Ewk_View_Private_Data* _ewk_view_priv_new(Ewk_View_Smart_Data* smartData)
    262267{
    263     Ewk_View_Private_Data* priv =
    264         static_cast<Ewk_View_Private_Data*>(calloc(1, sizeof(Ewk_View_Private_Data)));
     268    Ewk_View_Private_Data* priv = new Ewk_View_Private_Data;
    265269    if (!priv) {
    266270        EINA_LOG_CRIT("could not allocate Ewk_View_Private_Data");
     
    279283    eina_stringshare_del(priv->uri);
    280284    eina_stringshare_del(priv->title);
    281     free(priv);
     285    delete priv;
    282286}
    283287
  • trunk/Source/WebKit2/UIProcess/API/efl/ewk_web_error.cpp

    r121835 r122452  
    4545    const char* url;
    4646    const char* description;
     47
     48    _Ewk_Web_Error(WKErrorRef errorRef)
     49        : wkError(errorRef)
     50        , url(0)
     51        , description(0)
     52    { }
    4753};
    4854
     
    6470    eina_stringshare_del(error->url);
    6571    eina_stringshare_del(error->description);
    66     free(error);
     72    delete error;
    6773}
    6874
     
    123129    EINA_SAFETY_ON_NULL_RETURN_VAL(error, 0);
    124130
    125     Ewk_Web_Error* ewkError = static_cast<Ewk_Web_Error*>(calloc(1, sizeof(Ewk_Web_Error)));
    126     ewkError->wkError = error;
    127 
    128     return ewkError;
     131    return new Ewk_Web_Error(error);
    129132}
  • trunk/Source/WebKit2/UIProcess/API/efl/ewk_web_resource.cpp

    r121889 r122452  
    3434    CString url;
    3535    bool isMainResource;
     36
     37    _Ewk_Web_Resource(const char* _url, bool _isMainResource)
     38        : __ref(1)
     39         , url(_url)
     40        , isMainResource(_isMainResource)
     41    { }
    3642};
    3743
     
    5056        return;
    5157
    52     free(resource);
     58    delete resource;
    5359}
    5460
     
    6874    EINA_SAFETY_ON_NULL_RETURN_VAL(url, 0);
    6975
    70     Ewk_Web_Resource* resource = static_cast<Ewk_Web_Resource*>(calloc(1, sizeof(Ewk_Web_Resource)));
    71     resource->url = url;
    72     resource->isMainResource = isMainResource;
    73     resource->__ref = 1;
    74 
    75     return resource;
     76    return new Ewk_Web_Resource(url, isMainResource);
    7677}
    7778
Note: See TracChangeset for help on using the changeset viewer.