diff --git a/gui/libraryeditargdialog.cpp b/gui/libraryeditargdialog.cpp index fa7857a53..d3a2f9103 100644 --- a/gui/libraryeditargdialog.cpp +++ b/gui/libraryeditargdialog.cpp @@ -1,20 +1,32 @@ #include "libraryeditargdialog.h" #include "ui_libraryeditargdialog.h" -LibraryEditArgDialog::LibraryEditArgDialog(QWidget *parent, const CppcheckLibraryData::Function::Arg &a) : +LibraryEditArgDialog::LibraryEditArgDialog(QWidget *parent, const CppcheckLibraryData::Function::Arg &arg) : QDialog(parent), ui(new Ui::LibraryEditArgDialog), - arg(a) + minsizes(arg.minsizes) { ui->setupUi(this); ui->notbool->setChecked(arg.notbool); ui->notnull->setChecked(arg.notnull); ui->notuninit->setChecked(arg.notuninit); ui->strz->setChecked(arg.strz); - ui->formatStr->setChecked(arg.formatstr); - ui->formatStrSafe->setVisible(false); - ui->formatStrType->setVisible(false); + ui->formatstr->setChecked(arg.formatstr); ui->valid->setText(arg.valid); + foreach(const CppcheckLibraryData::Function::Arg::MinSize &minsize, arg.minsizes) { + if (ui->minsizes->count() > 0) + ui->minsizes->addItem("and"); + if (minsize.type == "argvalue") + ui->minsizes->addItem("Buffer size must be at least as many bytes as given by argument " + minsize.arg); + else if (minsize.type == "constant") + ui->minsizes->addItem("Buffer size must be at least " + minsize.arg + " bytes"); + else if (minsize.type == "mul") + ui->minsizes->addItem("Buffer size must be at least as many bytes as multiplication result of argument " + minsize.arg + " and " + minsize.arg2); + else if (minsize.type == "strlen") + ui->minsizes->addItem("Buffer size must be at least as big as the string in argument " + minsize.arg + ""); + else + ui->minsizes->addItem("unhandled type: " + minsize.type); + } } LibraryEditArgDialog::~LibraryEditArgDialog() @@ -29,8 +41,8 @@ CppcheckLibraryData::Function::Arg LibraryEditArgDialog::getArg() const ret.notnull = ui->notnull->isChecked(); ret.notuninit = ui->notuninit->isChecked(); ret.strz = ui->strz->isChecked(); - ret.formatstr = ui->formatStr->isChecked(); - ret.minsizes = arg.minsizes; // TODO : read from GUI + ret.formatstr = ui->formatstr->isChecked(); + ret.minsizes = minsizes; ret.valid = ui->valid->text(); return ret; } diff --git a/gui/libraryeditargdialog.h b/gui/libraryeditargdialog.h index 7f341cc89..4a8b54203 100644 --- a/gui/libraryeditargdialog.h +++ b/gui/libraryeditargdialog.h @@ -20,7 +20,7 @@ public: private: Ui::LibraryEditArgDialog *ui; - CppcheckLibraryData::Function::Arg arg; + QList minsizes; }; #endif // LIBRARYEDITARGDIALOG_H diff --git a/gui/libraryeditargdialog.ui b/gui/libraryeditargdialog.ui index 12f2e62fd..d79b3932b 100644 --- a/gui/libraryeditargdialog.ui +++ b/gui/libraryeditargdialog.ui @@ -59,48 +59,17 @@ - - - - - - 0 - 0 - - - - Format string - - - - - - - - output (like printf) - - - - - input (like scanf) - - - - - - - - - 0 - 0 - - - - Safe - - - - + + + + 0 + 0 + + + + Format string + +