[Cygwin] Compiler bug?

From: Templar Viper (templarviper@hotmail.com)
Date: 04/09/02


I've encountered a weird problem in the cygwin compiler. I'm using cygwin on win 98, 
and am using circle with olc and dg_scripts. In the following function, I create the 
integer j, with value 0. When I later try to give it a value in the code later on, it just 
returns 0. Maybe it's just something that I did wrong.. maybe not.
The code may seem a bit messy but i'm still working on that :)

void config_parse(struct descriptor_data *d, char *arg)
{
  int query = 0, j = 0; <--- j given value 0.
   
  switch (OLC_MODE(d)) {
  case CONFIG_MAIN_MENU:
    switch (*arg) {
    case 'q':
    case 'Q':
    case '0':  
      cfg_save();
   SEND_TO_Q("Settings saved.\r\n", d);  
   free(d->olc);
      d->olc = NULL;
   act("$n stops editing setup.", TRUE, d->character, 0, 0, TO_ROOM);
   REMOVE_BIT_AR(PLR_FLAGS(d->character), PLR_WRITING);
   STATE(d) = CON_PLAYING;
   break;
    case '1':
      configmenu(d->character, 1);
      OLC_MODE(d) = CONFIG_MENU1;
   break;
    case '2':
      configmenu(d->character, 2);
      OLC_MODE(d) = CONFIG_MENU2;
   break;
    case '3':
      configmenu(d->character, 3);
      OLC_MODE(d) = CONFIG_MENU3;
   break;
    default:
      SEND_TO_Q("Invalid choice!\r\n", d);
      config_disp_menu(d);
      break;
    }
    break;
   
  case CONFIG_MENU1:
    CREATE (d->olc, struct oasis_olc_data, 1);
    switch (*arg) {
    case '0':
    case 'q':
    case 'Q':               
       config_disp_menu(d);
    OLC_MODE(d) = CONFIG_MAIN_MENU;
    return;
    case '1':
   switcher(d->character, 0, 0);
   configmenu(d->character, 1);
   OLC_MODE(d) = CONFIG_MENU1;
      break;
 case '2':
   switcher(d->character, 1, 0);
   configmenu(d->character, 1);
   OLC_MODE(d) = CONFIG_MENU1;
      break;
 case '3':
   switcher(d->character, 2, 0);
   configmenu(d->character, 1);
   OLC_MODE(d) = CONFIG_MENU1;
      break;
 case '4':
   switcher(d->character, 3, 0);
   configmenu(d->character, 1);
   OLC_MODE(d) = CONFIG_MENU1;
      break;
 case '5':
   switcher(d->character, 4, 0);
   configmenu(d->character, 1);
   OLC_MODE(d) = CONFIG_MENU1;
      break;
 case '6':
   switcher(d->character, 5, 0);
   configmenu(d->character, 1);
   OLC_MODE(d) = CONFIG_MENU1;
      break;
 case '7':
   switcher(d->character, 6, 0);
   configmenu(d->character, 1);
   OLC_MODE(d) = CONFIG_MENU1;
      break;
 default:
       SEND_TO_Q("Invalid choice!\r\n", d);
       configmenu(d->character, 1);
    OLC_MODE(d) = CONFIG_MENU1;
 }
    break; 
   
    case CONFIG_MENU2:
 CREATE (d->olc, struct oasis_olc_data, 1);
    switch (*arg) {
    case '0':
    case 'q':
    case 'Q':               
       config_disp_menu(d);
    OLC_MODE(d) = CONFIG_MAIN_MENU;
    return;
    case '1':
   j = 7; <--- Here is it. Now it should give value 7 to j. (?) 
   SEND_TO_Q("Enter shout level: ", d);
   OLC_MODE(d) = CONFIG_QUERY;
   break;
 case '2':
   j = 8;
   SEND_TO_Q("Enter movement cost for holler: ", d);
   OLC_MODE(d) = CONFIG_QUERY;
      break;
 case '3':
   SEND_TO_Q("Enter maximum experience gain: ", d);
   j = 9;
   OLC_MODE(d) = CONFIG_QUERY;
      break;
 case '4':
   SEND_TO_Q("Enter shout level: ", d);
   j = 10;
   OLC_MODE(d) = CONFIG_QUERY;
      break;
 case '5':
   SEND_TO_Q("Enter shout level: ", d);
   j = 11;
   OLC_MODE(d) = CONFIG_QUERY;
      break;
 case '6':
   SEND_TO_Q("Enter shout level: ", d);
   j = 12;
   OLC_MODE(d) = CONFIG_QUERY;
      break;
 case '7':
   SEND_TO_Q("Enter shout level: ", d);
   j = 13;
   OLC_MODE(d) = CONFIG_QUERY;
      break;
 default:
      SEND_TO_Q("Invalid choice!\r\n", d);
      configmenu(d->character, 2);
   OLC_MODE(d) = CONFIG_MENU2;
   break;
 }
    break; 
  
  case CONFIG_MENU3:
     configmenu(d->character, 3);
     break;
  
  case CONFIG_QUERY:
  sprintf(buf, "%d", j); <--- This is just a check. Returns 0..
     SEND_TO_Q(buf, d);
  query = atoi(arg);
  switcher(d->character, j, query);
     configmenu(d->character, 2);
  OLC_MODE(d) = CONFIG_MENU2;
     break;
  
  default:
    /*
     * We should never get here.
     */
    mudlog("SYSERR: Reached default case in config_parse", BRF, LVL_IMPL, TRUE);
    STATE(d) = CON_PLAYING;
 break;
  }
}

--
   +---------------------------------------------------------------+
   | FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
   | Archives: http://post.queensu.ca/listserv/wwwarch/circle.html |
   | Newbie List:  http://groups.yahoo.com/group/circle-newbies/   |
   +---------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 06/25/03 PDT