Crash sur création de Thread

Archive.
Mu
Messages : 15
Inscription : sam. 09/avr./2005 15:28

Crash sur création de Thread

Message par Mu »

Ce n'est pas un vrai bug.

En fait ceci passe à la compilation :

Code : Tout sélectionner

result=CreateThread(@proc,0)
Mais fais un crash à l'exécution, en effet il manque les () après la procédure :

Code : Tout sélectionner

result=CreateThread(@proc(),0)
J'ai mis un sacré moment pour trouver quel était le problème. A voir si la vérification peut s'ajouter à l'analyse syntaxique.

J'ai remarqué également que la réception de la valeur n'était pas obligatoire dans la procédure. Je ne sais pas si c'est voulu.

Code : Tout sélectionner

Procedure proc() ; pas de variable de recupération
EndProcedure
result=CreateThread(@proc(),19)
++
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Message par cederavic »

Ce n'est même pas du tout un bug ;) Seulement un faute du programmeur...
A voir si la vérification peut s'ajouter à l'analyse syntaxique.
Le hic c'est qu'il faut passer une adresse, donc on peut tres bien lui donner un pointeur :

Code : Tout sélectionner

Procedure proc(value)
EndProcedure
*ptr = @proc()
result=CreateThread(*ptr,19)
Mu
Messages : 15
Inscription : sam. 09/avr./2005 15:28

Message par Mu »

Ok, je n'avais pas pensé à ça.
Dans ce cas on peut peut être le voir avec le @proc() ou l'*. Soit c'est un pointeur, soit c'est une procedure ?

Enfin que Fred ne s'embête pas trop pour ça. C'est vraiment minime ; ya surement d'autres trucs plus importants à faire pour l'instant.
C'était juste pour éviter à d'autres d'avoir le prob, et de chercher des heures pourquoi ça plante. Ca ne se voit pas du premier coup qu'il manque les (), même après 5 relectures. Bon d'accord je suis miro :wink:

Merci pour la précision ++
Répondre