From ef75ae4aeecd35ca179b3defb8d12d36c5dfec26 Mon Sep 17 00:00:00 2001 From: Chocobo1 Date: Sun, 13 Dec 2015 20:42:02 +0800 Subject: [PATCH] Try to concat most of the string at compile time The lesser unsafe code in signal handler the better Add license --- src/app/stacktrace_win_dlg.h | 91 ++++++++++++++++++++++++------------ 1 file changed, 60 insertions(+), 31 deletions(-) diff --git a/src/app/stacktrace_win_dlg.h b/src/app/stacktrace_win_dlg.h index 0040c7da5..eb4604477 100644 --- a/src/app/stacktrace_win_dlg.h +++ b/src/app/stacktrace_win_dlg.h @@ -1,51 +1,80 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2015 The qBittorrent project + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + * + */ + #ifndef STACKTRACE_WIN_DLG_H #define STACKTRACE_WIN_DLG_H -#include -#include +#include +#include #include "boost/version.hpp" #include "libtorrent/version.hpp" #include "ui_stacktrace_win_dlg.h" -class StraceDlg: public QDialog, private Ui::errorDialog +class StraceDlg : public QDialog, private Ui::errorDialog { Q_OBJECT public: - StraceDlg(QWidget* parent = 0): QDialog(parent) + StraceDlg(QWidget* parent = 0) + : QDialog(parent) { setupUi(this); } - ~StraceDlg() - { - } - void setStacktraceString(const QString& trace) { - QString htmlStr; - QTextStream outStream(&htmlStr); - outStream << "

" << - "qBittorrent has crashed" << - "

" << - "" << - "

" << - "Please report a bug at " << - "http://bugs.qbittorrent.org" << - " and provide the following backtrace." << - "

" << - "
" << - "


" << - "

qBittorrent version: " << VERSION << - "
Libtorrent version: " << LIBTORRENT_VERSION << - "
Qt version: " << QT_VERSION_STR << - "
Boost version: " << QString::number(BOOST_VERSION / 100000) << '.' << - QString::number((BOOST_VERSION / 100) % 1000) << '.' << - QString::number(BOOST_VERSION % 100) << "


" - "
" <<
-            trace <<
-            "
" << - "



"; + // try to call Qt function as less as possible + const int boostVerMajor = BOOST_VERSION / 100000; + const int boostVerMinor = ((BOOST_VERSION / 100) % 1000); + const int boostVerSubMin = BOOST_VERSION % 100; + QString htmlStr = QString( + "

" + "qBittorrent has crashed" + "

" + "

" + "Please file a bug report at " + "http://bugs.qbittorrent.org " + "and provide the following information:" + "

" + "


" + "

" + "qBittorrent version: " VERSION "
" + "Libtorrent version: " LIBTORRENT_VERSION "
" + "Qt version: " QT_VERSION_STR "
" + "Boost version: %1.%2.%3" + "


" + "
%4
" + "



") + .arg(boostVerMajor) + .arg(boostVerMinor) + .arg(boostVerSubMin) + .arg(trace); errorText->setHtml(htmlStr); }