goto done;
}
- if (str.length > (size_t) length) {
- goto done;
- }
-
if (last) {
- from -= str.length - 1;
- from = njs_max(from, 0);
+ from = njs_min(from, length - (int64_t) str.length);
+
+ if (to > from) {
+ goto done;
+ }
} else {
to -= str.length - 1;
case NJS_NUMBER:
byte = njs_number_to_uint32(njs_number(value));
+ if (last) {
+ from = njs_min(from, length - 1);
+ }
+
for (i = from; i != to; i += increment) {
if (u8[i] == byte) {
index = i;
return JS_EXCEPTION;
}
+ if (last) {
+ from = njs_min(from, length - 1);
+ }
+
for (i = from; i != to; i += increment) {
if (self.start[i] == (uint8_t) byte) {
return JS_NewInt32(ctx, i);
return JS_NewInt32(ctx, (last) ? length : 0);
}
- if (str.length > (size_t) length) {
- JS_FreeValue(ctx, buffer);
- return JS_NewInt32(ctx, -1);
- }
-
if (last) {
- from -= str.length - 1;
- from = njs_max(from, 0);
+ from = njs_min(from, length - (int64_t) str.length);
+
+ if (to > from) {
+ goto done;
+ }
} else {
to -= str.length - 1;
{ buf: Buffer.from('abcdef'), value: 'def', expected: 3 },
{ buf: Buffer.from('abcdef'), value: 'abc', offset: 1, expected: 0 },
{ buf: Buffer.from('abcdef'), value: 'def', offset: 1, expected: -1 },
+ { buf: Buffer.from('xxxABCx'), value: 'ABC', offset: 3, expected: 3 },
{ buf: Buffer.from(Buffer.alloc(7).fill('Zabcdef').buffer, 1), value: 'abcdef', expected: 0 },
{ buf: Buffer.from(Buffer.alloc(7).fill('Zabcdef').buffer, 1), value: 'abcdefg', expected: -1 },
{ buf: Buffer.from('abcdef'), value: '626364', encoding: 'hex', expected: 1 },
exception: 'TypeError: "utf-128" encoding is not supported' },
{ buf: Buffer.from('abcabc'), value: 0x61, expected: 3 },
{ buf: Buffer.from('abcabc'), value: 0x61, offset: 1, expected: 0 },
+ { buf: Buffer.from('ab'), value: 7, offset: 2, expected: -1 },
{ buf: Buffer.from('abcdef'), value: Buffer.from('def'), expected: 3 },
{ buf: Buffer.from('abcdef'), value: Buffer.from(new Uint8Array([0x60, 0x62, 0x63]).buffer, 1), expected: 1 },
{ buf: Buffer.from('abcdef'), value: {},