...someplace, where there isn't any trouble? Do you suppose there is such a place, Toto?

What's wrong with this code?

So, heute war's mir langweilig und ich habe mal den unlängst geschriebenen Code von anderen Leuten in meinem Dunstkreis inspiziert. Denn man gibt sich bei επτ€σ zwar gerne weltmännisch offen und trägt die eine oder andere Tugend wie eine Fahne vor sich her, aber die Realität sieht dann in aller Regel a bissal anders aus. Wie früher beim Unternehmensmotto ("Where people make..."), so heute auch bei Code Reviews. Und deswegen muß die Lücke eben am frühen Samstagabend notdürftig geschlossen werden. Denn nach nicht mal 5 Minuten bin ich über ein ziemlich grauenvolles Artefakt gestossen:

BOOL NetState_ThreadControl( DWORD dwCtrlCode, 
                              PNETSTATE& pNetState )
{
  /// ...
  switch ( dwCtrlCode )
  {
    case  NETSTATE_CTRL_STARTPOLLING:
      pNetState->hPollingThread = _beginthreadex( NULL, 0, 
                                    NetState_PollingThread, ....
      break;
    case NETSTATE_CTRL_SUSPENDPOLLING:
      SuspendThread( pNetState->hPollingThread );
      break;
    case NETSTATE_CTRL_STOPPOLLING:
      TerminateThread( pNetState->hPollingThread, 0);
      CloseHandle( pNetState->hPollingThread );
      pNetState->hPollingThread = NULL;
      break;
  }
  
  return TRUE;
}

Wo ist hier das große Problem, das den Einsatz dieses Stückchen Code zum Glücksspiel werden läßt? Kleiner Hinweis: Es geht nicht um fehlende Prüfungen von Rückgabewerten, error propagation im Allgemeinen. Los DEI, KIH, Schmitti und OTE und wer noch, was stinkt hier unübersehbar zum Himmel?

Trackback address for this post

This is a captcha-picture. It is used to prevent mass-access by robots.
Please enter the characters from the image above. (case insensitive)

2 comments

Comment from: dirk [Visitor]
dirkDie Verwendung von TerminateThread allein tut schon weh. Ich werde das Teil gleich mal etwas überarbeiten um wieder eine Jugendsünde von mir zu bereinigen. Auwa ;-(
05/01/06 @ 09:40
Comment from: dirk [Visitor]
dirkSo jetzt habe ich mal das lästige Suspend und Terminate Thread entfernt. *grummel*
05/01/06 @ 11:00

Comments are closed for this post.