c'est marqué où ?
tigcc ne respecte pas le C ANSI ?
juste une question : si ton prog est en mode KERNEL, je sais pas si ça vient pas d'UniOS (si j'ai bonne mémoire, JM dit dans la doc qu'il y a des fonctions qui ne sont pas supportées, et je crois qu'elles portent sur realloc... je me plante peut-être ?)
l'initialisation statique cause le problème suivant :
la 2eme fois qu'on lance le prog la variable ne se trouve pas à la valeur prévue dans le code mais contient ce qu'elle contenait au moment ou on a quitté la première fois.
en faisant une assignation à chaque fois que le prog est exécuté la variable retrouve la valeur qu'on veut.
j'utilise en effet unios mais mon prog est en nostub
je vais essayer de le lancer sans installer unios
Je croie <i>realloc</i> sur les pointeur est fonction bricolée (enfin, une marco qui appelle differents ROM_CALLs, koi)...
Il doit y avoir un ROM_CALL qui le fait avec un handle, c'est surement plus sur ...
PS : pour le truc de UniOS, je suis pas sur !
C'est possible que le bug vienne aussi de TIGCC, comme pour les request dans les boites de dialogue... ou alors de ton source (mais comme j'ai jamais étudié la fonction realloc, je préferre pas m'avancer sur ce point : je risuqerai de dire des conneries !)
Oui, c'est un truc u style :
#define realloc(a,sz) ({void *r; HANDLE h=GetHandle(a); HeapRealloc(h,sz); r=HLock(h); r;})
Sur tu le fait avec les handles, il faut savoir que ton hadle peut etre deplacé: tu doit donc modifier le pointeur (refaire un HeapDeref)!
Euh oui j'ai oublié le HeapUnlock()
pour pouvoir agrandir un bloc mémoire, sauf si on a le bol d'avoir de la place vide juste après (ce qui est très rare), on est obligé de le déplacer, donc de le dévérouiller