Changeset 1840

Show
Ignore:
Timestamp:
04/26/07 14:59:16
Author:
murrayc
Message:

2007-04-26 Murray Cumming <murrayc@murrayc.com>

        • libtinymail-maemo/tny-maemo-conic-device.c:

(tny_maemo_conic_device_instance_init),
(tny_maemo_conic_device_new): Do all the initialization in init, because
_new functions should just call g_object_new() and not access private API,
because they are just C convenience functions.
(on_connection_event), (tny_maemo_conic_device_connect),
(tny_maemo_conic_device_disconnect),
(tny_maemo_conic_device_get_iap),
(tny_maemo_conic_device_get_iap_list),
(tny_maemo_conic_device_force_online),
(tny_maemo_conic_device_force_offline),
(tny_maemo_conic_device_finalize):
Copy the iap string instead of just storing the pointer, because we have no
guarantees about the lifetime of the string that con_ic_event_get_iap_id()
returns. Free it in finalize.
Added g_return_if*() checks for priv->cnx, without which nothing could work.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/ChangeLog

    r1838 r1840  
     12007-04-26  Murray Cumming  <murrayc@murrayc.com> 
     2 
     3        * libtinymail-maemo/tny-maemo-conic-device.c: 
     4        (tny_maemo_conic_device_instance_init), 
     5        (tny_maemo_conic_device_new): Do all the initialization in init, because  
     6        _new functions should just call g_object_new() and not access private API,  
     7        because they are just C convenience functions. 
     8        (on_connection_event), (tny_maemo_conic_device_connect), 
     9        (tny_maemo_conic_device_disconnect), 
     10        (tny_maemo_conic_device_get_iap), 
     11        (tny_maemo_conic_device_get_iap_list), 
     12        (tny_maemo_conic_device_force_online), 
     13        (tny_maemo_conic_device_force_offline), 
     14        (tny_maemo_conic_device_finalize):  
     15        Copy the iap string instead of just storing the pointer, because we have no  
     16        guarantees about the lifetime of the string that con_ic_event_get_iap_id()  
     17        returns. Free it in finalize. 
     18        Added g_return_if*() checks for priv->cnx, without which nothing could work. 
     19 
    1202007-04-23  Philip Van Hoof  <pvanhoof@gnome.org> 
    221 
  • trunk/libtinymail-maemo/tny-maemo-conic-device.c

    r1800 r1840  
    3030        ConIcConnection *cnx; 
    3131        gboolean        is_online; 
    32         const gchar     *iap; 
     32        gchar     *iap; 
    3333} TnyMaemoConicDevicePriv; 
    3434 
     
    4949        TnyMaemoConicDevice *device;  
    5050        TnyMaemoConicDevicePriv *priv; 
    51         gboolean is_online
     51        gboolean is_online = FALSE
    5252 
    5353        g_return_if_fail (CON_IC_IS_CONNECTION(cnx)); 
     
    8383        switch (con_ic_connection_event_get_status(event)) { 
    8484        case CON_IC_STATUS_CONNECTED: 
    85                 priv->iap = con_ic_event_get_iap_id ((ConIcEvent*)(event)); 
     85                priv->iap = g_strdup (con_ic_event_get_iap_id ((ConIcEvent*)(event))); 
    8686                is_online = TRUE; 
    8787                break; 
     
    117117tny_maemo_conic_device_connect (TnyMaemoConicDevice *self, const gchar* iap_id) 
    118118{ 
    119         TnyMaemoConicDevicePriv *priv;  
     119        TnyMaemoConicDevicePriv *priv; 
    120120 
    121121        g_return_if_fail (TNY_IS_DEVICE(self)); 
    122122        priv = TNY_MAEMO_CONIC_DEVICE_GET_PRIVATE (self); 
    123123         
     124        g_return_val_if_fail (priv->cnx, FALSE); 
     125 
    124126        if (iap_id) { 
    125127                if (!con_ic_connection_connect_by_id (priv->cnx, iap_id, CON_IC_CONNECT_FLAG_NONE)) { 
     
    153155         
    154156        g_return_if_fail (TNY_IS_MAEMO_CONIC_DEVICE(self)); 
     157        g_return_val_if_fail (priv->cnx, FALSE); 
     158 
    155159        priv = TNY_MAEMO_CONIC_DEVICE_GET_PRIVATE (self); 
     160 
    156161 
    157162        if (iap_id) { 
     
    212217        g_return_val_if_fail (TNY_IS_MAEMO_CONIC_DEVICE(self), NULL); 
    213218        g_return_val_if_fail (iap_id, NULL); 
     219        g_return_val_if_fail (priv->cnx, NULL); 
    214220 
    215221        priv   = TNY_MAEMO_CONIC_DEVICE_GET_PRIVATE (self); 
     
    235241         
    236242        g_return_val_if_fail (TNY_IS_MAEMO_CONIC_DEVICE(self), NULL); 
     243        g_return_val_if_fail (priv->cnx, NULL); 
    237244 
    238245        priv   = TNY_MAEMO_CONIC_DEVICE_GET_PRIVATE (self); 
     
    272279         
    273280        g_return_if_fail (TNY_IS_DEVICE(self)); 
     281        g_return_if_fail (priv->cnx); 
     282 
    274283        priv = TNY_MAEMO_CONIC_DEVICE_GET_PRIVATE (self); 
    275284 
     
    289298 
    290299        g_return_if_fail (TNY_IS_DEVICE(self)); 
     300        g_return_if_fail (priv->cnx); 
     301 
    291302        priv   = TNY_MAEMO_CONIC_DEVICE_GET_PRIVATE (self); 
    292303 
     
    313324{ 
    314325        TnyMaemoConicDevice *self = (TnyMaemoConicDevice *)instance; 
     326 
    315327        TnyMaemoConicDevicePriv *priv = TNY_MAEMO_CONIC_DEVICE_GET_PRIVATE (self); 
    316          
    317         priv->is_online     = FALSE;  
    318 } 
    319  
    320  
    321  
    322 /** 
    323  * tny_maemo_conic_device_new: 
    324  * 
    325  * Return value: A new #TnyDevice instance 
    326  **/ 
    327 TnyDevice* 
    328 tny_maemo_conic_device_new (void) 
    329 { 
    330         TnyMaemoConicDevice *self;  
    331         TnyMaemoConicDevicePriv *priv; 
    332  
    333         self = g_object_new (TNY_TYPE_MAEMO_CONIC_DEVICE, NULL); 
    334         priv   = TNY_MAEMO_CONIC_DEVICE_GET_PRIVATE (self); 
    335  
    336328        priv->iap = NULL; 
    337329        priv->cnx = con_ic_connection_new (); 
    338330        if (!priv->cnx) { 
    339                 g_warning ("con_ic_connection_new failed"); 
    340                 g_object_unref (self); 
    341                 return NULL; 
     331                g_warning ("con_ic_connection_new failed. The TnyMaemoConicDevice will be useless."); 
    342332        } 
    343333        g_signal_connect (priv->cnx, "connection-event", 
     
    351341                g_warning ("could not send connect dbus message"); 
    352342         
     343         
     344        priv->is_online     = FALSE;  
     345} 
     346 
     347 
     348 
     349/** 
     350 * tny_maemo_conic_device_new: 
     351 * 
     352 * Return value: A new #TnyDevice instance 
     353 **/ 
     354TnyDevice* 
     355tny_maemo_conic_device_new (void) 
     356{ 
     357        TnyMaemoConicDevice *self = g_object_new (TNY_TYPE_MAEMO_CONIC_DEVICE, NULL); 
    353358        return TNY_DEVICE (self); 
    354359} 
     
    359364        TnyMaemoConicDevicePriv *priv; 
    360365        priv   = TNY_MAEMO_CONIC_DEVICE_GET_PRIVATE (obj); 
    361         if (CON_IC_IS_CONNECTION(priv->cnx)) { 
     366        if (priv->cnx && CON_IC_IS_CONNECTION(priv->cnx)) { 
    362367                if (!con_ic_connection_disconnect (priv->cnx)) 
    363368                        g_warning ("failed to send disconnect dbus message"); 
    364369                g_object_unref (priv->cnx); 
    365370                priv->cnx = NULL; 
     371        } 
     372 
     373        if (priv->iap) { 
     374                g_free (priv->iap); 
    366375                priv->iap = NULL; 
    367         }       
     376        } 
    368377 
    369378        (*parent_class->finalize) (obj);