vlc | branch: master | Lyndon Brown <jnq...@gmail.com> | Sat May 25 19:12:23 
2019 +0100| [63dc2d5e741d21393bdfae637079ba268cc6ca29] | committer: Pierre Lamot

qt: fix double translation of subcats in advanced prefs

the config_CategoryNameGet() and config_CategoryHelpGet() functions already
perform translation, so the use of qtr() instead of qfu() on the result of
calling those functions is an undesirable double translation.

this issue, combined with two others, results in a null dereference crash
(simply opening the advanced preferences view in the Qt GUI) under
conditions that arose in some work i was doing. those other issues
specifically are:
 1) the lookup table used by those functions is incomplete, missing
    records for a few subcats, thus a null is returned when looking them
    up. (this is addressed in a follow up commit).
 2) the vlc gettext wrappers crash when given a null pointer. (the subject
    of a separate patch discussion).

the explicit null check for help text has been removed here, since every
subcat should have help text along with a name in the lookup tables.

Signed-off-by: Pierre Lamot <pie...@videolabs.io>

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=63dc2d5e741d21393bdfae637079ba268cc6ca29
---

 .../dialogs/preferences/complete_preferences.cpp   | 25 ++++++----------------
 1 file changed, 6 insertions(+), 19 deletions(-)

diff --git a/modules/gui/qt/dialogs/preferences/complete_preferences.cpp 
b/modules/gui/qt/dialogs/preferences/complete_preferences.cpp
index eb8a3e0bff..e6b7c6677d 100644
--- a/modules/gui/qt/dialogs/preferences/complete_preferences.cpp
+++ b/modules/gui/qt/dialogs/preferences/complete_preferences.cpp
@@ -88,7 +88,6 @@ PrefsTree::PrefsTree( intf_thread_t *_p_intf, QWidget 
*_parent,
     /* Go through the list of conf */
     for( size_t i = 0; i < confsize; i++ )
     {
-        const char *psz_help;
         QIcon icon;
 
         /* Work on a new item */
@@ -102,12 +101,8 @@ PrefsTree::PrefsTree( intf_thread_t *_p_intf, QWidget 
*_parent,
 
             /* PrefsItemData Init */
             data = new PrefsItemData( this );
-            data->name = qtr( config_CategoryNameGet( p_item->value.i ) );
-            psz_help = config_CategoryHelpGet( p_item->value.i );
-            if( psz_help )
-                data->help = qtr( psz_help );
-            else
-                data->help.clear();
+            data->name = qfu( config_CategoryNameGet( p_item->value.i ) );
+            data->help = qfu( config_CategoryHelpGet( p_item->value.i ) );
             data->i_type = PrefsItemData::TYPE_CATEGORY;
             data->i_object_id = p_item->value.i;
 
@@ -153,12 +148,8 @@ PrefsTree::PrefsTree( intf_thread_t *_p_intf, QWidget 
*_parent,
                 /* Data still contains the correct thing */
                 data->i_type = PrefsItemData::TYPE_CATSUBCAT;
                 data->i_subcat_id = p_item->value.i;
-                data->name = qtr( config_CategoryNameGet( p_item->value.i ) );
-                psz_help = config_CategoryHelpGet( p_item->value.i );
-                if( psz_help )
-                    data->help = qtr( psz_help );
-                else
-                    data->help.clear();
+                data->name = qfu( config_CategoryNameGet( p_item->value.i ) );
+                data->help = qfu( config_CategoryHelpGet( p_item->value.i ) );
                 current_item->setData( 0, Qt::UserRole,
                                        QVariant::fromValue( data ) );
                 continue;
@@ -168,12 +159,8 @@ PrefsTree::PrefsTree( intf_thread_t *_p_intf, QWidget 
*_parent,
 
             /* Process the Data */
             data_sub = new PrefsItemData( this );
-            data_sub->name = qtr( config_CategoryNameGet( p_item->value.i) );
-            psz_help = config_CategoryHelpGet( p_item->value.i );
-            if( psz_help )
-                data_sub->help = qtr( psz_help );
-            else
-                data_sub->help.clear();
+            data_sub->name = qfu( config_CategoryNameGet( p_item->value.i) );
+            data_sub->help = qfu( config_CategoryHelpGet( p_item->value.i ) );
             data_sub->i_type = PrefsItemData::TYPE_SUBCATEGORY;
             data_sub->i_object_id = p_item->value.i;
 

_______________________________________________
vlc-commits mailing list
vlc-commits@videolan.org
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to