OSDN Git Service

LinGui: Fix several strict-aliasing warnings and a null pointer dereference
authorjstebbins <jstebbins@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Sun, 7 Sep 2008 17:06:39 +0000 (17:06 +0000)
committerjstebbins <jstebbins@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Sun, 7 Sep 2008 17:06:39 +0000 (17:06 +0000)
that can happen if preferences don't yet exist and your running the app over
an ssh session.

git-svn-id: svn://localhost/HandBrake/trunk@1673 b64f7644-9d1e-0410-96f1-a4d463321fa5

gtk/src/callbacks.c
gtk/src/hb-backend.c
gtk/src/presets.c
gtk/src/values.c

index ff07928..a4f7af2 100644 (file)
@@ -196,7 +196,10 @@ ghb_check_all_depencencies(signal_user_data_t *ud)
 
        g_debug("ghb_check_all_depencencies ()");
        ghb_dict_iter_init(&iter, rev_map);
-       while (g_hash_table_iter_next(&iter, (gpointer*)&dep_name, (gpointer*)&value))
+       // middle (void*) cast prevents gcc warning "defreferencing type-punned
+       // pointer will break strict-aliasing rules"
+       while (g_hash_table_iter_next(
+                       &iter, (gpointer*)(void*)&dep_name, (gpointer*)(void*)&value))
        {
                gboolean sensitive;
                dep_object = gtk_builder_get_object (ud->builder, dep_name);
index 8054320..44ca234 100644 (file)
@@ -688,16 +688,15 @@ ghb_get_title_number(gint titleindex)
 {
        hb_list_t  * list;
        hb_title_t * title;
-    hb_audio_config_t *audio = NULL;
        
-    if (h_scan == NULL) return 1;
+       if (h_scan == NULL) return 1;
        list = hb_get_titles( h_scan );
        if( !hb_list_count( list ) )
        {
                /* No valid title, stop right there */
-               return NULL;
+               return 1;
        }
-    title = hb_list_item( list, titleindex );
+       title = hb_list_item( list, titleindex );
        if (title == NULL) return 1;    // Bad titleindex
        return title->index;
 }
index 8f032d8..9052e1e 100644 (file)
@@ -213,7 +213,10 @@ init_settings_from_dict(
        GValue *gval, *val;
        
        ghb_dict_iter_init(&iter, internal);
-       while (g_hash_table_iter_next(&iter, (gpointer*)&key, (gpointer*)&gval))
+       // middle (void*) cast prevents gcc warning "defreferencing type-punned
+       // pointer will break strict-aliasing rules"
+       while (g_hash_table_iter_next(
+                       &iter, (gpointer*)(void*)&key, (gpointer*)(void*)&gval))
        {
                val = NULL;
                if (dict)
@@ -259,7 +262,10 @@ init_ui_from_dict(
        GValue *gval, *val;
        
        ghb_dict_iter_init(&iter, internal);
-       while (g_hash_table_iter_next(&iter, (gpointer*)&key, (gpointer*)&gval))
+       // middle (void*) cast prevents gcc warning "defreferencing type-punned
+       // pointer will break strict-aliasing rules"
+       while (g_hash_table_iter_next(
+                       &iter, (gpointer*)(void*)&key, (gpointer*)(void*)&gval))
        {
                val = NULL;
                if (dict)
@@ -427,7 +433,10 @@ ghb_prefs_to_ui(signal_user_data_t *ud)
        // then update the ui.
        internal = plist_get_dict(internalPlist, "Initialization");
        ghb_dict_iter_init(&iter, internal);
-       while (g_hash_table_iter_next(&iter, (gpointer*)&key, (gpointer*)&gval))
+       // middle (void*) cast prevents gcc warning "defreferencing type-punned
+       // pointer will break strict-aliasing rules"
+       while (g_hash_table_iter_next(
+                       &iter, (gpointer*)(void*)&key, (gpointer*)(void*)&gval))
        {
                ghb_ui_update(ud, key, gval);
        }
@@ -435,7 +444,10 @@ ghb_prefs_to_ui(signal_user_data_t *ud)
        dict = plist_get_dict(prefsPlist, "Preferences");
        internal = plist_get_dict(internalPlist, "Preferences");
        ghb_dict_iter_init(&iter, internal);
-       while (g_hash_table_iter_next(&iter, (gpointer*)&key, (gpointer*)&gval))
+       // middle (void*) cast prevents gcc warning "defreferencing type-punned
+       // pointer will break strict-aliasing rules"
+       while (g_hash_table_iter_next(
+                       &iter, (gpointer*)(void*)&key, (gpointer*)(void*)&gval))
     {
                const GValue *value = NULL;
                if (dict)
@@ -446,7 +458,10 @@ ghb_prefs_to_ui(signal_user_data_t *ud)
     }
        internal = plist_get_dict(internalPlist, "Preferences");
        ghb_dict_iter_init(&iter, internal);
-       while (g_hash_table_iter_next(&iter, (gpointer*)&key, (gpointer*)&gval))
+       // middle (void*) cast prevents gcc warning "defreferencing type-punned
+       // pointer will break strict-aliasing rules"
+       while (g_hash_table_iter_next(
+                       &iter, (gpointer*)(void*)&key, (gpointer*)(void*)&gval))
        {
                const GValue *value = NULL;
                if (dict)
@@ -497,7 +512,10 @@ ghb_prefs_save(GValue *settings)
        pref_dict = plist_get_dict(prefsPlist, "Preferences");
        if (pref_dict == NULL) return;
        ghb_dict_iter_init(&iter, dict);
-    while (g_hash_table_iter_next(&iter, (gpointer*)&key, (gpointer*)&value))
+       // middle (void*) cast prevents gcc warning "defreferencing type-punned
+       // pointer will break strict-aliasing rules"
+       while (g_hash_table_iter_next(
+                       &iter, (gpointer*)(void*)&key, (gpointer*)(void*)&value))
     {
            value = ghb_settings_get_value(settings, key);
            if (value != NULL)
@@ -545,21 +563,30 @@ ghb_settings_init(signal_user_data_t *ud)
        // then update the ui.
        internal = plist_get_dict(internalPlist, "Initialization");
        ghb_dict_iter_init(&iter, internal);
-       while (g_hash_table_iter_next(&iter, (gpointer*)&key, (gpointer*)&gval))
+       // middle (void*) cast prevents gcc warning "defreferencing type-punned
+       // pointer will break strict-aliasing rules"
+       while (g_hash_table_iter_next(
+                       &iter, (gpointer*)(void*)&key, (gpointer*)(void*)&gval))
        {
                ghb_settings_set_value(ud->settings, key, gval);
        }
 
        internal = plist_get_dict(internalPlist, "Presets");
        ghb_dict_iter_init(&iter, internal);
-       while (g_hash_table_iter_next(&iter, (gpointer*)&key, (gpointer*)&gval))
+       // middle (void*) cast prevents gcc warning "defreferencing type-punned
+       // pointer will break strict-aliasing rules"
+       while (g_hash_table_iter_next(
+                       &iter, (gpointer*)(void*)&key, (gpointer*)(void*)&gval))
        {
                ghb_settings_set_value(ud->settings, key, gval);
        }
 
        internal = plist_get_dict(internalPlist, "Preferences");
        ghb_dict_iter_init(&iter, internal);
-       while (g_hash_table_iter_next(&iter, (gpointer*)&key, (gpointer*)&gval))
+       // middle (void*) cast prevents gcc warning "defreferencing type-punned
+       // pointer will break strict-aliasing rules"
+       while (g_hash_table_iter_next(
+                       &iter, (gpointer*)(void*)&key, (gpointer*)(void*)&gval))
        {
                ghb_settings_set_value(ud->settings, key, gval);
        }
@@ -587,11 +614,18 @@ ghb_prefs_load(signal_user_data_t *ud)
 
         // Get defaults from internal defaults 
                ghb_dict_iter_init(&iter, internal);
-               while (g_hash_table_iter_next(&iter, (gpointer*)&key, (gpointer*)&gval))
+               // middle (void*) cast prevents gcc warning "defreferencing type-punned
+               // pointer will break strict-aliasing rules"
+               while (g_hash_table_iter_next(
+                               &iter, (gpointer*)(void*)&key, (gpointer*)(void*)&gval))
         {
                        ghb_dict_insert(dict, g_strdup(key), ghb_value_dup(gval));
         }
                const gchar *dir = g_get_user_special_dir (G_USER_DIRECTORY_VIDEOS);
+               if (dir == NULL)
+               {
+                       dir = ".";
+               }
                ghb_dict_insert(dict, 
                        g_strdup("destination_dir"), ghb_value_dup(ghb_string_value(dir)));
                store_plist(prefsPlist, "preferences");
@@ -613,7 +647,10 @@ ghb_presets_reload(signal_user_data_t *ud)
        GValue *orig_dict;
 
        ghb_dict_iter_init(&std_iter, std_dict);
-       while (g_hash_table_iter_next(&std_iter, (gpointer*)&name, (gpointer*)&orig_dict))
+       // middle (void*) cast prevents gcc warning "defreferencing type-punned
+       // pointer will break strict-aliasing rules"
+       while (g_hash_table_iter_next(
+                       &std_iter, (gpointer*)(void*)&name, (gpointer*)(void*)&orig_dict))
        {
                GHashTableIter iter;
                gchar *key;
@@ -622,7 +659,10 @@ ghb_presets_reload(signal_user_data_t *ud)
                dict = ghb_dict_value_new();
                ghb_dict_insert(presetsPlist, g_strdup(name), dict);
                ghb_dict_iter_init(&iter, orig_dict);
-               while (g_hash_table_iter_next(&iter, (gpointer*)&key, (gpointer*)&value))
+               // middle (void*) cast prevents gcc warning "defreferencing type-punned
+               // pointer will break strict-aliasing rules"
+               while (g_hash_table_iter_next(
+                               &iter, (gpointer*)(void*)&key, (gpointer*)(void*)&value))
                {
                        ghb_dict_insert(dict, g_strdup(key), ghb_value_dup(value));
                }
@@ -702,7 +742,10 @@ ghb_settings_save(signal_user_data_t *ud, const gchar *name)
        internal = plist_get_dict(internalPlist, "Presets");
 
        ghb_dict_iter_init(&iter, internal);
-       while (g_hash_table_iter_next(&iter, (gpointer*)&key, (gpointer*)&value))
+       // middle (void*) cast prevents gcc warning "defreferencing type-punned
+       // pointer will break strict-aliasing rules"
+       while (g_hash_table_iter_next(
+                       &iter, (gpointer*)(void*)&key, (gpointer*)(void*)&value))
        {
                if (!autoscale)
                {
index 8ef3bf3..b6be28a 100644 (file)
@@ -528,7 +528,10 @@ dict_copy(gpointer boxed)
                                                                dict_delete_key, dict_delete_value);
 
        g_hash_table_iter_init(&iter, dict);
-       while (g_hash_table_iter_next(&iter, (gpointer*)&key, (gpointer*)&gval))
+       // middle (void*) cast prevents gcc warning "defreferencing type-punned
+       // pointer will break strict-aliasing rules"
+       while (g_hash_table_iter_next(
+                       &iter, (gpointer*)(void*)&key, (gpointer*)(void*)&gval))
        {
                g_hash_table_insert(copy, g_strdup(key), ghb_value_dup(gval));
        }