# HG changeset patch # User Edouard Tisserant # Date 1588926004 -7200 # Node ID 61fee9f5368ad803436ca7f2cbc663231e03d563 # Parent 25271e1a3426448044f7a03e2fec0321b6c4522a Fixed FIND Standard Character String Function. Now returns 0 in case empty string is given either for IN1 or IN2. diff -r 25271e1a3426 -r 61fee9f5368a lib/C/iec_std_functions.h --- a/lib/C/iec_std_functions.h Fri Aug 30 10:27:45 2019 +0200 +++ b/lib/C/iec_std_functions.h Fri May 08 10:20:04 2020 +0200 @@ -1442,6 +1442,7 @@ static inline __strlen_t __pfind(STRING* IN1, STRING* IN2){ UINT count1 = 0; /* offset of first matching char in IN1 */ UINT count2 = 0; /* count of matching char */ + if(!(IN2->len > 0 && IN1->len >= IN2->len)) return 0; while(count1 + count2 < IN1->len && count2 < IN2->len) { if(IN1->body[count1 + count2] != IN2->body[count2]){ @@ -1452,7 +1453,7 @@ count2++; } } - return count2 == IN2->len -1 ? 0 : count1 + 1; + return count2 == IN2->len ? count1 + 1 : 0; } #define __iec_(TYPENAME) \