Bug concernant le traitement des expressions rationnelles par preg_match_all().
pour info :je suis PHP Version 5.2.2 sous XP sp2.
Je code des fonctions qui extraient des positions GPS dans différents formats.
Entre autre, je repère des séquences du genre "chaine entre 2 expressions rationnelles".
Lors de mes tests je suis tombé sur un cas "Dr Watson" (plantage php.exe).
J'ai réduit au plus simple le code pour essayer de trouver ce qui gène notre Docteur préféré (Dans le code complet les recherches sont plus complexes) qui s'énerve avec un :
"L'application, C:\wamp\php\php.exe, a généré une erreur d'application
L'erreur s'est produite le 05/21/2007 à 22:31:50.312 L'exception générée
était c0000005 à l'adresse 10154DB8 (php5ts!php_pcre_get_substring_list)"
En activant-désactivant les commentaires je me suis aperçu que si j'active seulement $position_string='W -3°' , j'ai le plantage violent, alors que si j'active en même temps l'une des lignes au dessus, j'ai un "seulement" un petit :
"Warning: preg_match_all(): Get subpatterns list failed in ..etc"
Voici le tout petit bout de code qui :
<?php
$position_string='W nimportekoi S';// trouve : W nimportekoi S
$position_string='Wn importeko iS';// trouve rien (sans planter)
$position_string='W -3°';// plantage Dr Watson
$pattern = '`(?i:[E|W]+\p{^L}+.+\p{^L}+[N|S])`';
preg_match_all($pattern, $position_string, $matches);
print_r ($matches[0]);
?>
"L'homme est un bug ambulant, et l'ordinateur son meilleur moyen d'expression."
Partager