alors
Bon, la bonne nouvelle, c'est que ton code compile sans modifications avec TIGCC.
oui, j'ai aussi remarqué ça
La mauvaise nouvelle, c'est que je vois au moins 2 bogues dans ton code:
1. Le pointeur sym retourné par SymFindPtr n'est plus valide après un HeapAlloc. Ton if (!sym) passera toujours (un pointeur nul reste un pointeur nul), mais dans ton cas else, ton sym->handle = handle; ne passe pas. D'ailleurs, je ne vois pas pourquoi tu alloues un nouveau handle quand le fichier existe déjà au lieu de réallouer celui qui existe déjà avec HeapRealloc.
Oui, je m'en suis aussi rendu compte, j'ai supprimé ces lignes, ça marche maintenant
(précaution par rapport à l'ASM z80 qui crée un fichier même si un fichier de même nom existe déjà, qui est inutile ici)
2. Tu libères ton handle avec HeapFree à la fin. Tu n'as pas le droit de faire ça ici! Le handle appartient au fichier que tu viens de créer, il ne faut pas t'étonner que tu corromps ton fichier si tu lui supprimes son handle!
Pareil, je l'ai enlevé et ça marche maintenant
mais j'me pose une question : le fait de ne pas libérer le Handle ne provoque t-il pas de perte de mémoire ?
Thibaut>je reprends un jeu que j'avais commencé à programmer il y a longtemps de cela ^^
sinon, simple curiosité :
#include <tigcclib.h>
void _main()
{
long o = 100000;
long p = 1;
long result = o * p;
printf("%ld",result);
}
pourquoi ça affiche 34464 (sachant que 100000 - 34464 = 65536) ?
pourtant 100000 rentre bien dans un long ?
et si je remplace o par 1000 et p par 100 ça marche (i.e ça affiche 100000)