Pruefung auf doppelte Funktionsnamen — und ein zweiter Fund
Die Kollision von heute war weder fuer den Browser noch fuer einen Syntaxpruefer sichtbar: Zwei Funktionen desselben Namens sind erlaubtes JavaScript, die spaetere gewinnt lautlos. Auch die Oberflaechen-Tests schwiegen -- sie pruefen, ob Kacheln DA sind, nicht ob sinnvoller Text darin steht. pruef-namenskollision.mjs durchsucht jetzt alle 110 Dateien mit eigenem JavaScript. Mit Gegenprobe, damit die Pruefung nicht selbst kaputtgehen und dabei "sauber" melden kann. ZWEITER FUND, AELTER ALS MEIN FEHLER Sie meldete sofort eine weitere Kollision: tageSeit stand zweimal in verwaltung.html. Beide rechneten dasselbe, mit einem Unterschied -- bei fehlendem Datum gab die eine null zurueck, die andere 0. Die spaetere (mit 0) gewann. Damit war die frueher definierte wirkungslos, und mit ihr die Pruefungen "if (t === null) return ''" in altersText und dringlichkeit: Ohne Datum stand dort "seit heute" statt gar nichts. Entfernt wurde die spaetere. Die beiden verbliebenen Aufrufer vertragen null genauso wie 0 -- nachgeprueft, nicht angenommen: Math.max(x, null) ergibt x, und null >= 7 ist falsch, gleich wie bei 0. 110 Dateien jetzt sauber. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
+1
-1
@@ -34,7 +34,7 @@
|
||||
Start alle alten Zwischenspeicher weg. Muss bei jeder Änderung an den
|
||||
Dateien unten hochgezählt werden, sonst hängen Nutzer auf einem alten
|
||||
Stand fest. */
|
||||
const CACHE_NAME = "dogfather-webdesign-v57";
|
||||
const CACHE_NAME = "dogfather-webdesign-v58";
|
||||
|
||||
/* Bausteine, die die Oberfläche zum Anzeigen braucht. Bewusst KEINE
|
||||
HTML-Datei in dieser Liste. */
|
||||
|
||||
+19
-12
@@ -3223,18 +3223,25 @@
|
||||
}
|
||||
|
||||
|
||||
/* Ganze Tage seit einem Zeitpunkt. Bewusst ueber den Kalendertag
|
||||
gerechnet, nicht ueber 24-Stunden-Bloecke: eine Anfrage von gestern
|
||||
23:50 Uhr ist umgangssprachlich "gestern", nicht "vor 0 Tagen". */
|
||||
function tageSeit(zeit) {
|
||||
if (!zeit) return 0;
|
||||
var dann = new Date(zeit);
|
||||
if (isNaN(dann.getTime())) return 0;
|
||||
var a = new Date(dann.getFullYear(), dann.getMonth(), dann.getDate());
|
||||
var heute = new Date();
|
||||
var b = new Date(heute.getFullYear(), heute.getMonth(), heute.getDate());
|
||||
return Math.round((b - a) / 86400000);
|
||||
}
|
||||
/* ⚠️ HIER STAND EINE ZWEITE FUNKTION tageSeit (entfernt 26.08.2026).
|
||||
|
||||
Sie rechnete dasselbe wie die weiter oben, unterschied sich aber in
|
||||
einem Punkt: Bei fehlendem oder unlesbarem Datum gab sie 0 zurueck,
|
||||
die obere gibt null.
|
||||
|
||||
Weil in JavaScript die spaetere Definition gewinnt, war die obere
|
||||
seit ihrer Einfuehrung wirkungslos -- und mit ihr die Pruefungen
|
||||
"if (t === null) return ''" in altersText und dringlichkeit. Ohne
|
||||
Datum stand dort seither "seit heute" statt gar nichts.
|
||||
|
||||
Gefunden hat das keine Fehlermeldung, sondern pruef-namenskollision.mjs,
|
||||
entstanden am selben Tag aus genau demselben Fehler an anderer
|
||||
Stelle. Zwei Funktionen desselben Namens sind erlaubtes JavaScript;
|
||||
kein Browser und kein Syntaxpruefer schlaegt an.
|
||||
|
||||
Die beiden verbliebenen Aufrufer weiter unten vertragen null
|
||||
genauso wie 0 -- geprueft: Math.max(x, null) ergibt x, und
|
||||
null >= 7 ist falsch, gleich wie bei 0. */
|
||||
|
||||
function zeitText(tage) {
|
||||
if (tage <= 0) return "heute";
|
||||
|
||||
Reference in New Issue
Block a user