qconf may cause SIGSEGV by trying to show debug information on empty menu items
Showing the changes to scripts (2 of 2 files). Show all
Unified · Split
| @@ -925,6 +925,8 @@ ConfigInfoView::ConfigInfoView(QWidget* parent, const char *name) · 924 unmodified lines | ||
| 925 | 925 | configSettings->endGroup(); |
| 926 | 926 | connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings())); |
| 927 | 927 | } |
| 928 | + | |
| 929 | + has_dbg_info = 0; | |
| 928 | 930 | } |
| 929 | 931 | |
| 930 | 932 | void ConfigInfoView::saveSettings(void) |
| @@ -953,10 +955,13 @@ void ConfigInfoView::setInfo(struct menu *m) · 22 unmodified lines | ||
| 953 | 955 | if (menu == m) |
| 954 | 956 | return; |
| 955 | 957 | menu = m; |
| 956 | − if (!menu) | |
| 958 | + if (!menu) { | |
| 959 | + has_dbg_info = 0; | |
| 957 | 960 | clear(); |
| 958 | − else | |
| 961 | + } else { | |
| 962 | + has_dbg_info = 1; | |
| 959 | 963 | menuInfo(); |
| 964 | + } | |
| 960 | 965 | } |
| 961 | 966 | |
| 962 | 967 | void ConfigInfoView::setSource(const QString& name) |
| @@ -991,6 +996,9 @@ void ConfigInfoView::symbolInfo(void) · 28 unmodified lines | ||
| 991 | 996 | { |
| 992 | 997 | QString str; |
| 993 | 998 | |
| 999 | + if (!has_dbg_info) | |
| 1000 | + return; | |
| 1001 | + | |
| 994 | 1002 | str += "<big>Symbol: <b>"; |
| 995 | 1003 | str += print_filter(sym->name); |
| 996 | 1004 | str += "</b></big><br><br>value: "; |
| @@ -273,6 +273,8 @@ protected: · 272 unmodified lines | ||
| 273 | 273 | struct symbol *sym; |
| 274 | 274 | struct menu *menu; |
| 275 | 275 | bool _showDebug; |
| 276 | + | |
| 277 | + int has_dbg_info; | |
| 276 | 278 | }; |
| 277 | 279 | |
| 278 | 280 | class ConfigSearchWindow : public QDialog { |