Crash with the ordinal indicators `º`/`ª` in `mi`
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 88/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- rust
- Área
- accessibility
Línea de trabajo
Empieza con split_apart_pseudo_scripts en src/canonicalize.rs y los ejemplos de MathML que se informó que fallan. El issue incluye una protección propuesta para identificadores de un solo carácter y una prueba de regresión llamada pseudo_script_single_char_mi; ejecuta cargo test para comprobar la corrección. El trabajo estará terminado cuando los ejemplos ya no provoquen fallos y la prueba de regresión pase.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
In Spanish, ordinals are written with a period and the ordinal indicator: 1.º, 2.ª (U+00BA, U+00AA; not the degree sign). When the indicator comes as an mi on its own, MathCAT crashes, in any language:
<math><mn>1</mn><mo>.</mo><mi>º</mi></math>
<math><mn>1.</mn><mi>º</mi></math>
<math><mn>2</mn><mo>.</mo><mi>ª</mi></math>
All give index out of bounds at src/canonicalize.rs:404.
Cause and proposed patch: split_apart_pseudo_scripts pairs each char with the next one, so a single char gives no pairs and replace_children is called with an empty list. Tested: cargo test passes; adds the test pseudo_script_single_char_mi.
diff --git a/src/canonicalize.rs b/src/canonicalize.rs
index 1e3936f8..00a5165b 100644
--- a/src/canonicalize.rs
+++ b/src/canonicalize.rs
@@ -1520,7 +1520,8 @@ impl CanonicalizeContext {
let text = as_text(mi);
// debug!("split_apart_pseudo_scripts: start text=\"{text}\"");
- if !text.chars().any(is_pseudo_script_char) || IS_DEGREES_C_OR_F.is_match(as_str!(text)) {
+ if !text.chars().any(is_pseudo_script_char) || IS_DEGREES_C_OR_F.is_match(as_str!(text)) ||
+ text.chars().nth(1).is_none() { // a single char (e.g., "º") has nothing to split
return None;
}
@@ -7085,6 +7086,14 @@ mod canonicalize_tests {
are_strs_canonically_equal_result(test_str, target_str, &[])
}
+ #[test]
+ fn pseudo_script_single_char_mi() -> Result<()> {
+ // used to crash (index out of bounds in replace_children)
+ let test_str = "<math><mn>1</mn><mi>º</mi></math>";
+ let target_str = "<math><mrow data-changed='added'><mn>1</mn><mo data-changed='added'>⁢</mo><mi>º</mi></mrow></math>";
+ are_strs_canonically_equal_result(test_str, target_str, &[])
+ }
+
#[test]
fn prescript_only() -> Result<()> {
let test_str = "<math><msub><mtext/><mn>92</mn></msub><mi>U</mi></math>";
- Lenguaje dominante
- Rust
- Estrellas
- 130
- Forks
- 96
- Merge medio
- 1 d 1 h
- PR fusionados (30 d)
- 84
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de daisy/MathCAT
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
daisy/MathCAT#946 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
discussion
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Los mantenedores suelen responder en 1 día
-
Review French navigation fileAbiertodiscussion translation
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
daisy/MathCAT#675 · 4 comentarios ·
Los mantenedores suelen responder en 1 día
-
feature request for vector from O to AQuizá libre de nuevo @moritz-gross la tomó hace 52 días y no hay ningún pull request abierto. Abiertoenhancement good first issue rules rust
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
daisy/MathCAT#621 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 1 día
Todos los issues de daisy/MathCAT
Issues similares
-
Panic on live viewport resize when unstyled elements exist in display: none subtreePosiblemente ocupada @GoCoder7 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
DioxusLabs/blitz#1488 ·
Los mantenedores suelen responder en 1 día
-
🏷️ good first issue enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
Los mantenedores suelen responder en 1 día
-
S-Needs triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
vectordotdev/vrl#2042 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día