comparison xrogue/options.c @ 254:e940e6c00751

Add some braces to a loop in parse_opts(). A for loop had no braces around its body, which was a single if-else statement. In Advanced Rogue 5, another statement had been added, accidentally removing the if-else from the loop. This could have resulted in an out-of-bounds access to the options array. In the other games, the added braces are only for clarity.
author John "Elwin" Edwards
date Fri, 10 Feb 2017 09:02:58 -0500
parents 50b89f165a34
children e52a8a7ad4c5
comparison
equal deleted inserted replaced
252:3d4252fa2ed3 254:e940e6c00751
372 len = (char *)sp - str; 372 len = (char *)sp - str;
373 /* 373 /*
374 * Look it up and deal with it 374 * Look it up and deal with it
375 */ 375 */
376 for (op = optlist; op < &optlist[NUM_OPTS]; op++) 376 for (op = optlist; op < &optlist[NUM_OPTS]; op++)
377 {
377 if (EQSTR(str, op->o_name, len)) 378 if (EQSTR(str, op->o_name, len))
378 { 379 {
379 if (op->o_putfunc == put_bool) /* if option is a boolean */ 380 if (op->o_putfunc == put_bool) /* if option is a boolean */
380 *(bool *)op->o_opt = TRUE; 381 *(bool *)op->o_opt = TRUE;
381 else /* string option */ 382 else /* string option */
433 && EQSTR(str, "no", 2) && EQSTR(str + 2, op->o_name, len - 2)) 434 && EQSTR(str, "no", 2) && EQSTR(str + 2, op->o_name, len - 2))
434 { 435 {
435 *(bool *)op->o_opt = FALSE; 436 *(bool *)op->o_opt = FALSE;
436 break; 437 break;
437 } 438 }
439 }
438 440
439 /* 441 /*
440 * skip to start of next option name 442 * skip to start of next option name
441 */ 443 */
442 while (*sp && !isalpha(*sp)) 444 while (*sp && !isalpha(*sp))