]> git.kaiwu.me - njs.git/commitdiff
Introduced njs_is_byte_or_ascii_string().
authorDmitry Volyntsev <xeioex@nginx.com>
Sat, 4 Jun 2022 06:24:11 +0000 (23:24 -0700)
committerDmitry Volyntsev <xeioex@nginx.com>
Sat, 4 Jun 2022 06:24:11 +0000 (23:24 -0700)
src/njs_regexp.c
src/njs_string.c
src/njs_string.h
src/njs_vmcode.c

index f851045f332b9d074645f1c7b6b20e553507d966..44b48297e6490be007ffe021d8528f1e2476cd2b 100644 (file)
@@ -1627,7 +1627,7 @@ njs_regexp_prototype_symbol_split(njs_vm_t *vm, njs_value_t *args,
 
     utf8 = NJS_STRING_BYTE;
 
-    if (s.length != 0 && s.length != s.size) {
+    if (!njs_is_byte_or_ascii_string(&s)) {
         utf8 = NJS_STRING_UTF8;
     }
 
index d1ae09e7d6a09f418126a3ad81aea8b15160cff3..c061fa99ffc7089ea32fb93d42e264357547d209 100644 (file)
@@ -926,7 +926,7 @@ njs_string_prototype_concat(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs,
         size += string.size;
         length += string.length;
 
-        if (string.length == 0 && string.size != 0) {
+        if (njs_is_byte_string(&string)) {
             mask = 0;
         }
     }
@@ -2642,8 +2642,7 @@ njs_string_prototype_to_lower_case(njs_vm_t *vm, njs_value_t *args,
 
     (void) njs_string_prop(&string, njs_argument(args, 0));
 
-    if (string.length == 0 || string.length == string.size) {
-        /* Byte or ASCII string. */
+    if (njs_is_byte_or_ascii_string(&string)) {
 
         p = njs_string_alloc(vm, &vm->retval, string.size, string.length);
         if (njs_slow_path(p == NULL)) {
@@ -2714,8 +2713,7 @@ njs_string_prototype_to_upper_case(njs_vm_t *vm, njs_value_t *args,
 
     (void) njs_string_prop(&string, njs_argument(args, 0));
 
-    if (string.length == 0 || string.length == string.size) {
-        /* Byte or ASCII string. */
+    if (njs_is_byte_or_ascii_string(&string)) {
 
         p = njs_string_alloc(vm, &vm->retval, string.size, string.length);
         if (njs_slow_path(p == NULL)) {
@@ -2787,8 +2785,7 @@ njs_string_prototype_trim(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs,
     start = string.start;
     end = string.start + string.size;
 
-    if (string.length == 0 || string.length == string.size) {
-        /* Byte or ASCII string. */
+    if (njs_is_byte_or_ascii_string(&string)) {
 
         if (mode & NJS_TRIM_START) {
             for ( ;; ) {
@@ -4392,8 +4389,7 @@ njs_string_encode_uri(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs,
     src = string.start;
     end = src + string.size;
 
-    if (string.length == 0 || string.length == string.size) {
-        /* Byte or ASCII string. */
+    if (njs_is_byte_or_ascii_string(&string)) {
 
         while (src < end) {
             byte = *src++;
@@ -4450,8 +4446,7 @@ njs_string_encode_uri(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs,
 
     src = string.start;
 
-    if (string.length == 0 || string.length == string.size) {
-        /* Byte or ASCII string. */
+    if (njs_is_byte_or_ascii_string(&string)) {
         (void) njs_string_encode(escape, string.size, src, dst);
         return NJS_OK;
     }
index 5874790aee3eeb2df101397798f7680f823a586d..3dfe9269780c9444a7fb6d0d2493746f6b9c2fdd 100644 (file)
@@ -105,6 +105,13 @@ njs_is_byte_string(njs_string_prop_t *string)
 }
 
 
+njs_inline njs_bool_t
+njs_is_byte_or_ascii_string(njs_string_prop_t *string)
+{
+    return (string->length == 0 || string->length == string->size);
+}
+
+
 njs_inline uint32_t
 njs_string_calc_length(njs_utf8_t utf8, const u_char *start, size_t size)
 {
index cc33d20b2a9be319336462fc1b58cec89cda5985..0e318627c7d5722ebb3d2000b9f03b0760176680 100644 (file)
@@ -1606,16 +1606,13 @@ njs_string_concat(njs_vm_t *vm, njs_value_t *val1, njs_value_t *val2)
     (void) njs_string_prop(&string1, val1);
     (void) njs_string_prop(&string2, val2);
 
+    length = string1.length + string2.length;
+
     /*
      * A result of concatenation of Byte and ASCII or UTF-8 strings
      * is a Byte string.
      */
-    if ((string1.length != 0 || string1.size == 0)
-        && (string2.length != 0 || string2.size == 0))
-    {
-        length = string1.length + string2.length;
-
-    } else {
+    if (njs_is_byte_string(&string1) || njs_is_byte_string(&string2)) {
         length = 0;
     }