Commit 79a9701f63b8cef7e227cef96fd24ef834ce3045

Authored by m-holger
1 parent 3d29a053

Refactor `QPDFFormFieldObjectHelper`: streamline checkbox and radio button value…

… validation, improve readability, and reduce redundancy in type checks.
libqpdf/QPDFFormFieldObjectHelper.cc
... ... @@ -304,25 +304,26 @@ QPDFFormFieldObjectHelper::setV(QPDFObjectHandle value, bool need_appearances)
304 304 {
305 305 if (getFieldType() == "/Btn") {
306 306 if (isCheckbox()) {
307   - bool okay = false;
308   - if (value.isName()) {
309   - std::string name = value.getName();
310   - okay = true;
311   - // Accept any value other than /Off to mean checked. Files have been seen that use
312   - // /1 or other values.
313   - setCheckBoxValue((name != "/Off"));
314   - }
315   - if (!okay) {
  307 + if (!value.isName()) {
316 308 warn("ignoring attempt to set a checkbox field to a value whose type is not name");
  309 + return;
317 310 }
318   - } else if (isRadioButton()) {
319   - if (value.isName()) {
320   - setRadioButtonValue(value);
321   - } else {
  311 + std::string name = value.getName();
  312 + // Accept any value other than /Off to mean checked. Files have been seen that use
  313 + // /1 or other values.
  314 + setCheckBoxValue(name != "/Off");
  315 + return;
  316 + }
  317 + if (isRadioButton()) {
  318 + if (!value.isName()) {
322 319 warn(
323 320 "ignoring attempt to set a radio button field to an object that is not a name");
  321 + return;
324 322 }
325   - } else if (isPushbutton()) {
  323 + setRadioButtonValue(value);
  324 + return;
  325 + }
  326 + if (isPushbutton()) {
326 327 warn("ignoring attempt set the value of a pushbutton field");
327 328 }
328 329 return;
... ...