Ignore:
Timestamp:
May 1, 2007, 8:56:49 PM (18 years ago)
Author:
rainer
Message:

Fix for ticket #59 (process check malfunction).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/sh_processcheck.c

    r102 r103  
    798798  unsigned int  pos = 0;
    799799  char tstr[256];
    800   enum { SKIP_WS, SKIP_WS2, GET_NUM, SKIP_END, GET_NUM2 } line;
     800  enum { SKIP_TO_WS, SKIP_WS, SKIP_TO_WS2, SKIP_WS2, GET_NUM, SKIP_END, GET_NUM2 } line;
    801801
    802802  SL_ENTER(_("sh_processes_readps"));
     
    861861            }
    862862          break;
     863        case SKIP_TO_WS:
     864          if (!isspace(cc))
     865            break;
     866          line = SKIP_WS;
     867          /* fallthrough */
    863868        case SKIP_WS:
    864869          if (isspace(cc))
     
    873878              break;
    874879            }
     880          else if (isspace(cc))
     881            {
    875882#ifdef HAVE_THREADS
    876           num  = 0;
     883              num  = 0;
     884              line = SKIP_WS2;
     885#else
     886              if (num < sh_prochk_maxpid && num >= sh_prochk_minpid)
     887                {
     888                  res[num - sh_prochk_minpid] |= flag;
     889                }
     890              line = SKIP_END;
     891#endif
     892              break;
     893            }
     894          else
     895            {
     896              line = SKIP_TO_WS;
     897              break;
     898            }
     899        case SKIP_TO_WS2:
     900          if (!isspace(cc))
     901            break;
    877902          line = SKIP_WS2;
    878 #else
    879           if (num < sh_prochk_maxpid && num >= sh_prochk_minpid)
    880             {
    881               res[num - sh_prochk_minpid] |= flag;
    882             }
    883           line = SKIP_END;
    884 #endif
    885           break;
     903          /* fallthrough */
    886904        case SKIP_WS2:
    887905          if (isspace(cc))
     
    896914              break;
    897915            }
    898           if (num < sh_prochk_maxpid && num >= sh_prochk_minpid)
    899             {
    900               res[num - sh_prochk_minpid] |= flag;
    901             }
    902           line = SKIP_END;
    903           break;
     916          else if (isspace(cc))
     917            {
     918              if (num < sh_prochk_maxpid && num >= sh_prochk_minpid)
     919                {
     920                  res[num - sh_prochk_minpid] |= flag;
     921                }
     922              line = SKIP_END;
     923              break;
     924            }
     925          else
     926            {
     927              line = SKIP_TO_WS2;
     928              break;
     929            }
    904930        default:
    905931          SL_RETURN ((-1), _("sh_processes_readps"));
     
    9931019   */
    9941020  (void) sh_ext_pclose(&task);
     1021  sh_ext_tas_free (&task);
    9951022  SL_RETURN ((retval), _("sh_processes_runps"));
    9961023}
     
    11751202                      (unsigned long) sh_prochk_minpid,
    11761203                      (unsigned long) (sh_prochk_maxpid-1));
     1204
     1205      if (sh_prochk_res) {
     1206        memset (sh_prochk_res, 0, sizeof(short) * sh_prochk_size);
     1207      }
    11771208      status = sh_process_check_int(sh_prochk_res);
     1209
    11781210      if (status != 0)
    11791211        ShProchkActive = S_FALSE;
Note: See TracChangeset for help on using the changeset viewer.