Skip to content

Commit

Permalink
WIP Step2
Browse files Browse the repository at this point in the history
CommandFile::CloseInputCommandFile: meilleur gestion des erreurs fatales
  • Loading branch information
marcboulle committed Nov 5, 2024
1 parent b5236c9 commit 0f72bc7
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 17 deletions.
34 changes: 20 additions & 14 deletions src/Norm/base/CommandFile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,13 @@ void CommandFile::CloseInputCommandFile()
StringVector svIdentifierPath;
ALString sValue;

// Arret immediat en cas d'erreur fatale en cours: cf. fin de la methode
if (bPendingFatalError)
{
assert(fInputCommands == NULL);
return;
}

// Lecture si necessaire de la fin du fichier pour avoir des diagnostiques d'erreur complets
// - bloc if non termine
// - diagnostique sur les cles du parametrage json non utilisees dans les commandes
Expand Down Expand Up @@ -259,23 +266,22 @@ void CommandFile::CloseInputCommandFile()
ResetParser();
jsonParameters.DeleteAll();

// Erreur fatal standard si erreur avant la fin de fichier
// Erreur fatale standard si erreur avant la fin de fichier
// On empeche une boucle infinie en cas d'erreur fatale, car la destruction des objets statiques
// et la fermeture des fichiers est appellee apres la fin du main en cas d'erreur fatale
if (not bPendingFatalError)
assert(not bPendingFatalError);
if (not bIsParserOkBeforeEnd)
{
if (not bIsParserOkBeforeEnd)
{
AddInputCommandFileError("Analysis of input commands interrupted because of errors");
bPendingFatalError = true, Global::AddFatalError("Command file", "", "Batch mode failure");
}
// Erreur fatale en cas d'erreurs detectees apres la fermeture du fichier
else if (not bIsParserOkAfterEnd)
{
bPendingFatalError = true,
Global::AddFatalError("Command file", "",
"Batch mode failure detected when closing input command file");
}
AddInputCommandFileError("Analysis of input commands interrupted because of errors");
bPendingFatalError = true;
Global::AddFatalError("Command file", "", "Batch mode failure");
}
// Erreur fatale en cas d'erreurs detectees apres la fermeture du fichier
else if (not bIsParserOkAfterEnd)
{
bPendingFatalError = true,
Global::AddFatalError("Command file", "",
"Batch mode failure detected when closing input command file");
}
}

Expand Down
5 changes: 2 additions & 3 deletions src/Norm/base/TextService.h
Original file line number Diff line number Diff line change
Expand Up @@ -88,8 +88,7 @@ class TextService : public Object
// - encodage Unicode: U+00E0
// Le parser de json utilise JsonToCString pour transformer les chaines de caracteres json
// en chaine de caracteres C, par defaut avec un encodage Utf8
// Avec le mode ForceUnicodeToAnsi, on peut retrouver l'encodsage ansi dans le cas unicode
// Avec le mode ForceUtf8ToAnsi, on peut retrouver l'encodage ansi dans le cas Utf8
// Avec le mode ForceUnicodeToAnsi, on peut retrouver l'encodage ansi dans le cas unicode

// En mode ForceUnicodeToAnsi (defaut: false), les caracteres de la plage de windows1252/iso8859-1 encodes
// via la syntaxe \uxxxx sont transformes en caracteres de l'ansi etendu, non Utf8
Expand All @@ -99,7 +98,7 @@ class TextService : public Object
// Conversion d'une chaine Json valide vers une chaine C
// On renvoie false en cas d'erreur d'encodage de la chaine a convertir,
// tout en encodant au mieux avec des caractere speciaux ou les caracteres tels quels
// En mode ForceUnicodeAnsi ou ForceUtf8ToAnsi, on renvoie true si la chaine Json est valide,
// En mode ForceUnicodeAnsi, on renvoie true si la chaine Json est valide,
// bien que la chaine C ne soit pas avec un encodage UTF8
static boolean JsonToCString(const char* sJsonString, ALString& sCString);

Expand Down

0 comments on commit 0f72bc7

Please sign in to comment.