diff --git a/src/library/ooc/oocStrings.Mod b/src/library/ooc/oocStrings.Mod index add23621..73315fa3 100644 --- a/src/library/ooc/oocStrings.Mod +++ b/src/library/ooc/oocStrings.Mod @@ -63,7 +63,11 @@ PROCEDURE Length* (stringVal: ARRAY OF CHAR): INTEGER; i: INTEGER; BEGIN i := 0; - WHILE (stringVal[i] # 0X) DO + (* note from noch: + original ooc code below, commented out, leads to + index out of range runtime error + WHILE (stringVal[i] # 0X) DO *) + WHILE ((i < LEN(stringVal)) & (stringVal[i] # 0X)) DO INC (i) END; RETURN i diff --git a/src/library/ooc2/ooc2Strings.Mod b/src/library/ooc2/ooc2Strings.Mod index a0ad4362..278f2663 100644 --- a/src/library/ooc2/ooc2Strings.Mod +++ b/src/library/ooc2/ooc2Strings.Mod @@ -59,7 +59,12 @@ PROCEDURE Length* (stringVal: ARRAY OF CHAR): INTEGER; i: INTEGER; BEGIN i := 0; - WHILE (stringVal[i] # 0X) DO + (* note from noch: + this original ooc code crashes with index out of range + because it doesn't expect a string which has no 0X character + so i had to change it + WHILE (stringVal[i] # 0X) DO *) + WHILE ((i < LEN(stringVal)) & (stringVal[i] # 0X)) DO INC (i) END; RETURN i