developer.jelix.org is not used any more and exists only for history. Post new tickets on the Github account.
developer.jelix.org n'est plus utilisée, et existe uniquement pour son historique. Postez les nouveaux tickets sur le compte github.

Opened 11 years ago

Closed 11 years ago

#442 closed bug (fixed)

boucle quand le message d'erreur n'existe pas dans le charset courant.

Reported by: hugues Owned by: Julien
Priority: high Milestone: Jelix 1.0.3
Component: jelix:core:jLocale Version: 1.0.1
Severity: critical Keywords:
Cc: Blocked By:
Blocking: Documentation needed: no
Hosting Provider: Php version:

Description

En changeant le charset, j'ai une erreur qui revient à chaque fois ( mais qui n'empêche pas l'affichage de ma page )

PHP Fatal error: Maximum function nesting level of '100' reached, aborting! in jelix/core/jLocale.class.php on line 132

Attachments (1)

442-infinite-loop-when-error-not-exists-in-current-charset.diff (3.6 KB) - added by Julien 11 years ago.

Download all attachments as: .zip

Change History (12)

comment:1 Changed 11 years ago by laurentj

  • Component changed from jelix to jelix:core
  • Owner set to laurentj

comment:2 Changed 11 years ago by laurentj

  • Documentation needed unset
  • Milestone set to Jelix 1.1
  • Priority changed from normal to high
  • Severity changed from normal to critical

comment:3 Changed 11 years ago by Julien

  • Owner changed from laurentj to Julien

comment:4 Changed 11 years ago by Julien

  • Status changed from new to assigned

comment:5 Changed 11 years ago by Julien

Je prends le ticket en charge, car je travaille en parallèle sur le #95

comment:6 Changed 11 years ago by Julien

Ok, j'ai la solution qui fonctionne. Sur le même principe que le patch apporté par Laurent au #387.

J'ai fait en sorte qu'il aille chercher le charset UTF-8 dans la langue en_EN lorsque le message de l'exception à localiser est jelix~errors.selector.invalid.target.

De cette façon, plus de boucle infinie.

J'ai choisi UTF-8 car il n'y a pas de choix meilleur ou pire que celui-ci, de toute façon ce ne sera pas "compatible" avec le charset manquant demandé, sauf à faire des tables de compatibilité bien trop compliquées.

Comme c'est une réelle erreur technique (qui ne doit a priori jamais avoir lieu en production), je pense que en_EN en UTF-8 est valable.

Je ferai le patch ce soir en rentrant chez moi.

comment:7 Changed 11 years ago by laurentj

  • Component changed from jelix:core to jelix:core:jLocale

comment:8 Changed 11 years ago by Julien

  • review set to review?

Voici le patch, fonctionne comme annoncé au commentaire 6

comment:9 Changed 11 years ago by laurentj

  • Milestone changed from Jelix 1.1 to Jelix 1.0.3
  • review changed from review? to review+

ça me semble ok. J'ai ajouté des tests unitaires dans la branche 1.0.x et le trunk (testWithBadCharset dans core.jlocale.html_cli.php).

Tu peux inclure le patch dans le trunk et la branche 1.0.x (pour la branche, il va falloir le faire à la main car le patch a du mal a passé à cause de différence).

Décommente aussi le code dans testWithBadCharset.

Merci :-)

comment:10 Changed 11 years ago by Julien

Hello,

code intégré dans le commit [808] pour le trunk et la branche 1.0.x

Tests unitaires Ok aussi (NB : j'ai trouvé une petite typo dans les commentaires du test unitaire, corrigée dans le commit [809])

comment:11 Changed 11 years ago by Julien

  • Resolution set to fixed
  • Status changed from assigned to closed
Note: See TracTickets for help on using tickets.