Skip to content

Commit 7be868d

Browse files
softhack007DedeHai
authored andcommitted
bugfix: indexOf() returns -1 if string not found
... so we must use `int` instead of `unsigned`
1 parent 703f84e commit 7be868d

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

wled00/util.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -265,16 +265,16 @@ uint8_t extractModeSlider(uint8_t mode, uint8_t slider, char *dest, uint8_t maxL
265265
if (mode < strip.getModeCount()) {
266266
String lineBuffer = FPSTR(strip.getModeData(mode));
267267
if (lineBuffer.length() > 0) {
268-
unsigned start = lineBuffer.indexOf('@');
269-
unsigned stop = lineBuffer.indexOf(';', start);
268+
int start = lineBuffer.indexOf('@'); // String::indexOf() returns an int, not an unsigned; -1 means "not found"
269+
int stop = lineBuffer.indexOf(';', start);
270270
if (start>0 && stop>0) {
271271
String names = lineBuffer.substring(start, stop); // include @
272-
unsigned nameBegin = 1, nameEnd, nameDefault;
272+
int nameBegin = 1, nameEnd, nameDefault;
273273
if (slider < 10) {
274274
for (size_t i=0; i<=slider; i++) {
275275
const char *tmpstr;
276276
dest[0] = '\0'; //clear dest buffer
277-
if (nameBegin == 0) break; // there are no more names
277+
if (nameBegin <= 0) break; // there are no more names
278278
nameEnd = names.indexOf(',', nameBegin);
279279
if (i == slider) {
280280
nameDefault = names.indexOf('=', nameBegin); // find default value

0 commit comments

Comments
 (0)