Dotclear

Ticket #1196 (closed defect: worksforme)

Opened 14 years ago

Last modified 13 years ago

preg replace on ##########MACRO#([0-9]+)#

Reported by: Veovis Owned by: xave
Priority: normal Milestone:
Component: module:clearbricks Version: 2.3
Severity: normal Keywords:
Cc:

Description

Description

Le module syntaxhl met en évidence un bug du noyau en affichant un beau ##########MACRO#0# sur mes pages à la place des emplacement de code.

Comment reproduire

  • installer un dotclear 2.2 ou 2.3
  • installer le plugin syntaxhl
  • créer un billet avec du code d'un langagge quelconque comme sql:

/ [sql]

/* n'importe quoi */

/

  • enregistrer le billet (c'est à ce moment que la transformation est effectuée, pas à l'affichage du billet en front)
  • vérifier l'affichage final en front

Explication

dans le fichier .inc/libs/clearbricks/text.wiki2xhtml/class.wiki2xhtml.php ligne 314: $res = preg_replace('/##########MACRO#([0-9]+)#$/mse','$this->putMacro("$1")',$res);

Étant donné que le pattern peut se trouver n'importe où, pas seulement isolé sur une ligne, il n'est pas correct d'ajouter la détection de début et de fin de ligne, de fait, le modificateur m devient également obsolète.

Le modificateur s ne sert à rien, autant l'enlever.

Enfin, il n'y a qu'une seule parenthèse, ainsi pour catcher le nombre décrit par [0-9+], le remplacement doit contenir $0 et non $1

Patch (si pas de fichier uploadé)

la ligne devrait être remplacée par $res = preg_replace('/#{10}MACRO#([0-9]+)#/e','$this->putMacro("$0")',$res);

Attachments

class.wiki2xhtml.php.patch Download (447 bytes) - added by Veovis 14 years ago.
patch for ##########MACRO bug

Change History

comment:1 Changed 14 years ago by Jean-Michel

J'ai déjà obtenu la même erreur ##########MACRO#0# sans plugin additionnel, dans un projet Dotclear contenant des billets wiki mais contenant des bouts de XHTML. Et si je me souviens bien, cela bloquait avec une liste numérotée.

comment:2 Changed 14 years ago by bruno

  • Milestone 2.3 deleted

comment:3 Changed 14 years ago by bruno

  • Severity changed from major to normal

Changed 14 years ago by Veovis

patch for ##########MACRO bug

comment:4 Changed 14 years ago by Veovis

j'ai mis à jour le patch. avec la version précédente, la valeur envoyée à $this->putMacro valait toujours 0. Donc, en présence de plusieurs ##########MACRO, ces marqueurs étaient tous remplacés par le même bloc n°0.

comment:5 Changed 13 years ago by franck

Pas moyen de reproduire ce bug avec ce contenu :

Test

///[sql]
SELECT * FROM dc_users WHERE user_id = `admin` LIMIT 10;
///

J'obtiens un affichage correct :

<p>Test</p>

<pre class="sql sql" style="font-family:inherit"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span> <span style="color: #993333; font-weight: bold;">FROM</span> dc_users <span style="color: #993333; font-weight: bold;">WHERE</span> user_id <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">`admin`</span> <span style="color: #993333; font-weight: bold;">LIMIT</span> <span style="color: #cc66cc;">10</span>;</pre>

comment:6 Changed 13 years ago by franck

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

Sites map