| Line | Source | Count |
| 1 | | - |
| 2 | | - |
| 3 | | - |
| 4 | | - |
| 5 | | - |
| 6 | | - |
| 7 | | - |
| 8 | | - |
| 9 | | - |
| 10 | | - |
| 11 | | - |
| 12 | | - |
| 13 | | - |
| 14 | | - |
| 15 | static | - |
| 16 | _Bool | - |
| 17 | | - |
| 18 | knuth_morris_pratt_multibyte (const char *haystack, const char *needle, | - |
| 19 | const char **resultp) | - |
| 20 | { | - |
| 21 | size_t m = mbslen (needle); | - |
| 22 | mbchar_t *needle_mbchars; | - |
| 23 | size_t *table; | - |
| 24 | | - |
| 25 | | - |
| 26 | void *memory = ((| TRUE | never evaluated | | FALSE | never evaluated |
__builtin_constant_p (m)| TRUE | never evaluated | | FALSE | never evaluated |
&& __builtin_constant_p (sizeof (mbchar_t) + sizeof (size_t))| TRUE | never evaluated | | FALSE | never evaluated |
? ((size_t) (| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 27 | (9223372036854775807L) | TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 28 | < | TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 29 | (18446744073709551615UL) | TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 30 | ? | TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 31 | (9223372036854775807L) | TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 32 | : | TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 33 | (18446744073709551615UL) | TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 34 | - 1) / (sizeof (mbchar_t) + sizeof (size_t)) < (m)) : ({ __xalloc_count_type __xalloc_count; __builtin_mul_overflow (m, sizeof (mbchar_t) + sizeof (size_t), &__xalloc_count); }))| TRUE | never evaluated | | FALSE | never evaluated |
? | 0 |
| 35 | ((void *)0) | - |
| 36 | : (((| TRUE | never evaluated | | FALSE | never evaluated |
m) * (sizeof (mbchar_t) + sizeof (size_t))) < 4032 - (2 * sa_alignment_max - 1)| TRUE | never evaluated | | FALSE | never evaluated |
? (void *) (((uintptr_t) (char *) __builtin_alloca (((m) * (sizeof (mbchar_t) + sizeof (size_t))) + 2 * sa_alignment_max - 1) + (2 * sa_alignment_max - 1)) & ~(uintptr_t)(2 * sa_alignment_max - 1)) : mmalloca ((m) * (sizeof (mbchar_t) + sizeof (size_t))))); | 0 |
| 37 | void *table_memory; | - |
| 38 | if (memory == | TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 39 | ((void *)0)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 40 | ) | - |
| 41 | return never executed: return 0 ; never executed: return 0 ; | 0 |
| 42 | 0 never executed: return 0 ; | 0 |
| 43 | ; never executed: return 0 ; | 0 |
| 44 | needle_mbchars = memory; | - |
| 45 | table_memory = needle_mbchars + m; | - |
| 46 | table = table_memory; | - |
| 47 | | - |
| 48 | | - |
| 49 | { | - |
| 50 | mbui_iterator_t iter; | - |
| 51 | size_t j; | - |
| 52 | | - |
| 53 | j = 0; | - |
| 54 | for (((iter).cur.ptr = (needle), (iter).in_shift = | - |
| 55 | 0 | - |
| 56 | , memset (&(iter).state, '\0', sizeof (mbstate_t)), (iter).next_done = | - |
| 57 | 0 | - |
| 58 | ); (mbuiter_multi_next (&(iter)), !(((| TRUE | never evaluated | | FALSE | never evaluated |
iter).cur).wc_valid| TRUE | never evaluated | | FALSE | never evaluated |
&& ((| TRUE | never evaluated | | FALSE | never evaluated |
iter).cur).wc == 0| TRUE | never evaluated | | FALSE | never evaluated |
)); ((iter).cur.ptr += (iter).cur.bytes, (iter).next_done = | 0 |
| 59 | 0 | - |
| 60 | ), j++) | - |
| 61 | mb_copy (&needle_mbchars[j], &(iter).cur); never executed: mb_copy (&needle_mbchars[j], &(iter).cur); | 0 |
| 62 | } | - |
| 63 | { | - |
| 64 | size_t i, j; | - |
| 65 | | - |
| 66 | | - |
| 67 | table[1] = 1; | - |
| 68 | j = 0; | - |
| 69 | | - |
| 70 | for (i = 2; i < m| TRUE | never evaluated | | FALSE | never evaluated |
; i++) | 0 |
| 71 | { | - |
| 72 | | - |
| 73 | | - |
| 74 | | - |
| 75 | | - |
| 76 | mbchar_t *b = &needle_mbchars[i - 1]; | - |
| 77 | | - |
| 78 | for (;;) | - |
| 79 | { | - |
| 80 | | - |
| 81 | | - |
| 82 | | - |
| 83 | if (((*| TRUE | never evaluated | | FALSE | never evaluated |
b).wc_valid| TRUE | never evaluated | | FALSE | never evaluated |
&& (| TRUE | never evaluated | | FALSE | never evaluated |
needle_mbchars[j]).wc_valid| TRUE | never evaluated | | FALSE | never evaluated |
? (*b).wc == (needle_mbchars[j]).wc : (*| TRUE | never evaluated | | FALSE | never evaluated |
b).bytes == (needle_mbchars[j]).bytes| TRUE | never evaluated | | FALSE | never evaluated |
&& memcmp ((*b).ptr, (needle_mbchars[j]).ptr, (*b).bytes) == 0| TRUE | never evaluated | | FALSE | never evaluated |
)| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 84 | { | - |
| 85 | | - |
| 86 | table[i] = i - ++j; | - |
| 87 | break; never executed: break; | 0 |
| 88 | } | - |
| 89 | | - |
| 90 | | - |
| 91 | | - |
| 92 | if (j == 0| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 93 | { | - |
| 94 | | - |
| 95 | table[i] = i; | - |
| 96 | break; never executed: break; | 0 |
| 97 | } | - |
| 98 | j = j - table[j]; | - |
| 99 | } never executed: end of block | 0 |
| 100 | | - |
| 101 | } never executed: end of block | 0 |
| 102 | } | - |
| 103 | | - |
| 104 | | - |
| 105 | { | - |
| 106 | size_t j; | - |
| 107 | mbui_iterator_t rhaystack; | - |
| 108 | mbui_iterator_t phaystack; | - |
| 109 | | - |
| 110 | *resultp = | - |
| 111 | ((void *)0) | - |
| 112 | ; | - |
| 113 | j = 0; | - |
| 114 | ((rhaystack).cur.ptr = (haystack), (rhaystack).in_shift = | - |
| 115 | 0 | - |
| 116 | , memset (&(rhaystack).state, '\0', sizeof (mbstate_t)), (rhaystack).next_done = | - |
| 117 | 0 | - |
| 118 | ); | - |
| 119 | ((phaystack).cur.ptr = (haystack), (phaystack).in_shift = | - |
| 120 | 0 | - |
| 121 | , memset (&(phaystack).state, '\0', sizeof (mbstate_t)), (phaystack).next_done = | - |
| 122 | 0 | - |
| 123 | ); | - |
| 124 | | - |
| 125 | while ((mbuiter_multi_next (&(phaystack)), !(((| TRUE | never evaluated | | FALSE | never evaluated |
phaystack).cur).wc_valid| TRUE | never evaluated | | FALSE | never evaluated |
&& ((| TRUE | never evaluated | | FALSE | never evaluated |
phaystack).cur).wc == 0| TRUE | never evaluated | | FALSE | never evaluated |
))) | 0 |
| 126 | if (((| TRUE | never evaluated | | FALSE | never evaluated |
needle_mbchars[j]).wc_valid| TRUE | never evaluated | | FALSE | never evaluated |
&& ((| TRUE | never evaluated | | FALSE | never evaluated |
phaystack).cur).wc_valid| TRUE | never evaluated | | FALSE | never evaluated |
? (needle_mbchars[j]).wc == ((phaystack).cur).wc : (| TRUE | never evaluated | | FALSE | never evaluated |
needle_mbchars[j]).bytes == ((phaystack).cur).bytes| TRUE | never evaluated | | FALSE | never evaluated |
&& memcmp ((needle_mbchars[j]).ptr, ((phaystack).cur).ptr, (needle_mbchars[j]).bytes) == 0| TRUE | never evaluated | | FALSE | never evaluated |
)| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 127 | { | - |
| 128 | j++; | - |
| 129 | ((phaystack).cur.ptr += (phaystack).cur.bytes, (phaystack).next_done = | - |
| 130 | 0 | - |
| 131 | ); | - |
| 132 | if (j == m| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 133 | { | - |
| 134 | | - |
| 135 | *resultp = (rhaystack).cur.ptr; | - |
| 136 | break; never executed: break; | 0 |
| 137 | } | - |
| 138 | } never executed: end of block | 0 |
| 139 | else if (j > 0| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 140 | { | - |
| 141 | | - |
| 142 | size_t count = table[j]; | - |
| 143 | j -= count; | - |
| 144 | for (; count > 0| TRUE | never evaluated | | FALSE | never evaluated |
; count--) | 0 |
| 145 | { | - |
| 146 | if (!(mbuiter_multi_next (&(rhaystack)), !(((| TRUE | never evaluated | | FALSE | never evaluated |
rhaystack).cur).wc_valid| TRUE | never evaluated | | FALSE | never evaluated |
&& ((| TRUE | never evaluated | | FALSE | never evaluated |
rhaystack).cur).wc == 0| TRUE | never evaluated | | FALSE | never evaluated |
))) | 0 |
| 147 | abort (); never executed: abort (); | 0 |
| 148 | ((rhaystack).cur.ptr += (rhaystack).cur.bytes, (rhaystack).next_done = | - |
| 149 | 0 | - |
| 150 | ); | - |
| 151 | } never executed: end of block | 0 |
| 152 | } never executed: end of block | 0 |
| 153 | else | - |
| 154 | { | - |
| 155 | | - |
| 156 | if (!(mbuiter_multi_next (&(rhaystack)), !(((| TRUE | never evaluated | | FALSE | never evaluated |
rhaystack).cur).wc_valid| TRUE | never evaluated | | FALSE | never evaluated |
&& ((| TRUE | never evaluated | | FALSE | never evaluated |
rhaystack).cur).wc == 0| TRUE | never evaluated | | FALSE | never evaluated |
))) | 0 |
| 157 | abort (); never executed: abort (); | 0 |
| 158 | ((rhaystack).cur.ptr += (rhaystack).cur.bytes, (rhaystack).next_done = | - |
| 159 | 0 | - |
| 160 | ); | - |
| 161 | ((phaystack).cur.ptr += (phaystack).cur.bytes, (phaystack).next_done = | - |
| 162 | 0 | - |
| 163 | ); | - |
| 164 | } never executed: end of block | 0 |
| 165 | } | - |
| 166 | | - |
| 167 | freea (memory); | - |
| 168 | return never executed: return 1 ; never executed: return 1 ; | 0 |
| 169 | 1 never executed: return 1 ; | 0 |
| 170 | ; never executed: return 1 ; | 0 |
| 171 | } | - |
| 172 | | - |
| 173 | | - |
| 174 | | - |
| 175 | char * | - |
| 176 | mbsstr (const char *haystack, const char *needle) | - |
| 177 | { | - |
| 178 | | - |
| 179 | | - |
| 180 | | - |
| 181 | | - |
| 182 | | - |
| 183 | if ( | - |
| 184 | (| TRUE | never evaluated | | FALSE | never evaluated |
__ctype_get_mb_cur_max ()) | TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 185 | > 1| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 186 | { | - |
| 187 | mbui_iterator_t iter_needle; | - |
| 188 | | - |
| 189 | ((iter_needle).cur.ptr = (needle), (iter_needle).in_shift = | - |
| 190 | 0 | - |
| 191 | , memset (&(iter_needle).state, '\0', sizeof (mbstate_t)), (iter_needle).next_done = | - |
| 192 | 0 | - |
| 193 | ); | - |
| 194 | if ((mbuiter_multi_next (&(iter_needle)), !(((| TRUE | never evaluated | | FALSE | never evaluated |
iter_needle).cur).wc_valid| TRUE | never evaluated | | FALSE | never evaluated |
&& ((| TRUE | never evaluated | | FALSE | never evaluated |
iter_needle).cur).wc == 0| TRUE | never evaluated | | FALSE | never evaluated |
))) | 0 |
| 195 | { | - |
| 196 | | - |
| 197 | _Bool | - |
| 198 | try_kmp = | - |
| 199 | 1 | - |
| 200 | ; | - |
| 201 | size_t outer_loop_count = 0; | - |
| 202 | size_t comparison_count = 0; | - |
| 203 | size_t last_ccount = 0; | - |
| 204 | mbui_iterator_t iter_needle_last_ccount; | - |
| 205 | | - |
| 206 | mbui_iterator_t iter_haystack; | - |
| 207 | | - |
| 208 | ((iter_needle_last_ccount).cur.ptr = (needle), (iter_needle_last_ccount).in_shift = | - |
| 209 | 0 | - |
| 210 | , memset (&(iter_needle_last_ccount).state, '\0', sizeof (mbstate_t)), (iter_needle_last_ccount).next_done = | - |
| 211 | 0 | - |
| 212 | ); | - |
| 213 | ((iter_haystack).cur.ptr = (haystack), (iter_haystack).in_shift = | - |
| 214 | 0 | - |
| 215 | , memset (&(iter_haystack).state, '\0', sizeof (mbstate_t)), (iter_haystack).next_done = | - |
| 216 | 0 | - |
| 217 | ); | - |
| 218 | for (;; ((iter_haystack).cur.ptr += (iter_haystack).cur.bytes, (iter_haystack).next_done = | - |
| 219 | 0 | - |
| 220 | )) | - |
| 221 | { | - |
| 222 | if (!(mbuiter_multi_next (&(iter_haystack)), !(((| TRUE | never evaluated | | FALSE | never evaluated |
iter_haystack).cur).wc_valid| TRUE | never evaluated | | FALSE | never evaluated |
&& ((| TRUE | never evaluated | | FALSE | never evaluated |
iter_haystack).cur).wc == 0| TRUE | never evaluated | | FALSE | never evaluated |
))) | 0 |
| 223 | | - |
| 224 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
| 225 | ((void *)0) never executed: return ((void *)0) ; | 0 |
| 226 | ; never executed: return ((void *)0) ; | 0 |
| 227 | | - |
| 228 | | - |
| 229 | | - |
| 230 | if (try_kmp| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 231 | && outer_loop_count >= 10| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 232 | && comparison_count >= 5 * outer_loop_count| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 233 | { | - |
| 234 | | - |
| 235 | | - |
| 236 | size_t count = comparison_count - last_ccount; | - |
| 237 | for (; | - |
| 238 | count > 0| TRUE | never evaluated | | FALSE | never evaluated |
&& (mbuiter_multi_next (&(iter_needle_last_ccount)), !(((| TRUE | never evaluated | | FALSE | never evaluated |
iter_needle_last_ccount).cur).wc_valid| TRUE | never evaluated | | FALSE | never evaluated |
&& ((| TRUE | never evaluated | | FALSE | never evaluated |
iter_needle_last_ccount).cur).wc == 0| TRUE | never evaluated | | FALSE | never evaluated |
)); | 0 |
| 239 | count--) | - |
| 240 | (( never executed: ((iter_needle_last_ccount).cur.ptr += (iter_needle_last_ccount).cur.bytes, (iter_needle_last_ccount).next_done = 0 ); iter_needle_last_ccount).cur.ptr += (iter_needle_last_ccount).cur.bytes, (iter_needle_last_ccount).next_done = never executed: ((iter_needle_last_ccount).cur.ptr += (iter_needle_last_ccount).cur.bytes, (iter_needle_last_ccount).next_done = 0 ); | 0 |
| 241 | 0 never executed: ((iter_needle_last_ccount).cur.ptr += (iter_needle_last_ccount).cur.bytes, (iter_needle_last_ccount).next_done = 0 ); | 0 |
| 242 | ); never executed: ((iter_needle_last_ccount).cur.ptr += (iter_needle_last_ccount).cur.bytes, (iter_needle_last_ccount).next_done = 0 ); | 0 |
| 243 | last_ccount = comparison_count; | - |
| 244 | if (!(mbuiter_multi_next (&(iter_needle_last_ccount)), !(((| TRUE | never evaluated | | FALSE | never evaluated |
iter_needle_last_ccount).cur).wc_valid| TRUE | never evaluated | | FALSE | never evaluated |
&& ((| TRUE | never evaluated | | FALSE | never evaluated |
iter_needle_last_ccount).cur).wc == 0| TRUE | never evaluated | | FALSE | never evaluated |
))) | 0 |
| 245 | { | - |
| 246 | | - |
| 247 | const char *result; | - |
| 248 | | - |
| 249 | _Bool | - |
| 250 | success = | - |
| 251 | knuth_morris_pratt_multibyte (haystack, needle, | - |
| 252 | &result); | - |
| 253 | if (success| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 254 | return never executed: return (char *) result; (char *) result;never executed: return (char *) result; | 0 |
| 255 | try_kmp = | - |
| 256 | 0 | - |
| 257 | ; | - |
| 258 | } never executed: end of block | 0 |
| 259 | } never executed: end of block | 0 |
| 260 | | - |
| 261 | outer_loop_count++; | - |
| 262 | comparison_count++; | - |
| 263 | if ((((| TRUE | never evaluated | | FALSE | never evaluated |
iter_haystack).cur).wc_valid| TRUE | never evaluated | | FALSE | never evaluated |
&& ((| TRUE | never evaluated | | FALSE | never evaluated |
iter_needle).cur).wc_valid| TRUE | never evaluated | | FALSE | never evaluated |
? ((iter_haystack).cur).wc == ((iter_needle).cur).wc : ((| TRUE | never evaluated | | FALSE | never evaluated |
iter_haystack).cur).bytes == ((iter_needle).cur).bytes| TRUE | never evaluated | | FALSE | never evaluated |
&& memcmp (((iter_haystack).cur).ptr, ((iter_needle).cur).ptr, ((iter_haystack).cur).bytes) == 0| TRUE | never evaluated | | FALSE | never evaluated |
)| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 264 | | - |
| 265 | { | - |
| 266 | mbui_iterator_t rhaystack; | - |
| 267 | mbui_iterator_t rneedle; | - |
| 268 | | - |
| 269 | memcpy (&rhaystack, &iter_haystack, sizeof (mbui_iterator_t)); | - |
| 270 | ((rhaystack).cur.ptr += (rhaystack).cur.bytes, (rhaystack).next_done = | - |
| 271 | 0 | - |
| 272 | ); | - |
| 273 | | - |
| 274 | ((rneedle).cur.ptr = (needle), (rneedle).in_shift = | - |
| 275 | 0 | - |
| 276 | , memset (&(rneedle).state, '\0', sizeof (mbstate_t)), (rneedle).next_done = | - |
| 277 | 0 | - |
| 278 | ); | - |
| 279 | if (!(mbuiter_multi_next (&(rneedle)), !(((| TRUE | never evaluated | | FALSE | never evaluated |
rneedle).cur).wc_valid| TRUE | never evaluated | | FALSE | never evaluated |
&& ((| TRUE | never evaluated | | FALSE | never evaluated |
rneedle).cur).wc == 0| TRUE | never evaluated | | FALSE | never evaluated |
))) | 0 |
| 280 | abort (); never executed: abort (); | 0 |
| 281 | ((rneedle).cur.ptr += (rneedle).cur.bytes, (rneedle).next_done = | - |
| 282 | 0 | - |
| 283 | ); | - |
| 284 | | - |
| 285 | for (;; ((rhaystack).cur.ptr += (rhaystack).cur.bytes, (rhaystack).next_done = | - |
| 286 | 0 | - |
| 287 | ), ((rneedle).cur.ptr += (rneedle).cur.bytes, (rneedle).next_done = | - |
| 288 | 0 | - |
| 289 | )) | - |
| 290 | { | - |
| 291 | if (!(mbuiter_multi_next (&(rneedle)), !(((| TRUE | never evaluated | | FALSE | never evaluated |
rneedle).cur).wc_valid| TRUE | never evaluated | | FALSE | never evaluated |
&& ((| TRUE | never evaluated | | FALSE | never evaluated |
rneedle).cur).wc == 0| TRUE | never evaluated | | FALSE | never evaluated |
))) | 0 |
| 292 | | - |
| 293 | return never executed: return (char *) (iter_haystack).cur.ptr; (char *) (iter_haystack).cur.ptr;never executed: return (char *) (iter_haystack).cur.ptr; | 0 |
| 294 | if (!(mbuiter_multi_next (&(rhaystack)), !(((| TRUE | never evaluated | | FALSE | never evaluated |
rhaystack).cur).wc_valid| TRUE | never evaluated | | FALSE | never evaluated |
&& ((| TRUE | never evaluated | | FALSE | never evaluated |
rhaystack).cur).wc == 0| TRUE | never evaluated | | FALSE | never evaluated |
))) | 0 |
| 295 | | - |
| 296 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
| 297 | ((void *)0) never executed: return ((void *)0) ; | 0 |
| 298 | ; never executed: return ((void *)0) ; | 0 |
| 299 | comparison_count++; | - |
| 300 | if (!(((| TRUE | never evaluated | | FALSE | never evaluated |
rhaystack).cur).wc_valid| TRUE | never evaluated | | FALSE | never evaluated |
&& ((| TRUE | never evaluated | | FALSE | never evaluated |
rneedle).cur).wc_valid| TRUE | never evaluated | | FALSE | never evaluated |
? ((rhaystack).cur).wc == ((rneedle).cur).wc : ((| TRUE | never evaluated | | FALSE | never evaluated |
rhaystack).cur).bytes == ((rneedle).cur).bytes| TRUE | never evaluated | | FALSE | never evaluated |
&& memcmp (((rhaystack).cur).ptr, ((rneedle).cur).ptr, ((rhaystack).cur).bytes) == 0| TRUE | never evaluated | | FALSE | never evaluated |
)| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 301 | | - |
| 302 | break; never executed: break; | 0 |
| 303 | } never executed: end of block | 0 |
| 304 | } never executed: end of block | 0 |
| 305 | } never executed: end of block | 0 |
| 306 | } never executed: end of block | 0 |
| 307 | else | - |
| 308 | return never executed: return (char *) haystack; (char *) haystack;never executed: return (char *) haystack; | 0 |
| 309 | } | - |
| 310 | else | - |
| 311 | { | - |
| 312 | if (*| TRUE | never evaluated | | FALSE | never evaluated |
needle != '\0'| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 313 | { | - |
| 314 | | - |
| 315 | _Bool | - |
| 316 | try_kmp = | - |
| 317 | 1 | - |
| 318 | ; | - |
| 319 | size_t outer_loop_count = 0; | - |
| 320 | size_t comparison_count = 0; | - |
| 321 | size_t last_ccount = 0; | - |
| 322 | const char *needle_last_ccount = needle; | - |
| 323 | | - |
| 324 | | - |
| 325 | | - |
| 326 | char b = *needle++; | - |
| 327 | | - |
| 328 | for (;; haystack++) | - |
| 329 | { | - |
| 330 | if (*| TRUE | never evaluated | | FALSE | never evaluated |
haystack == '\0'| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 331 | | - |
| 332 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
| 333 | ((void *)0) never executed: return ((void *)0) ; | 0 |
| 334 | ; never executed: return ((void *)0) ; | 0 |
| 335 | | - |
| 336 | | - |
| 337 | | - |
| 338 | if (try_kmp| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 339 | && outer_loop_count >= 10| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 340 | && comparison_count >= 5 * outer_loop_count| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 341 | { | - |
| 342 | | - |
| 343 | | - |
| 344 | if (needle_last_ccount != | TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 345 | ((void *)0)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 346 | ) | - |
| 347 | { | - |
| 348 | needle_last_ccount += | - |
| 349 | strnlen (needle_last_ccount, | - |
| 350 | comparison_count - last_ccount); | - |
| 351 | if (*| TRUE | never evaluated | | FALSE | never evaluated |
needle_last_ccount == '\0'| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 352 | needle_last_ccount = never executed: needle_last_ccount = ((void *)0) ; | 0 |
| 353 | ((void *)0) never executed: needle_last_ccount = ((void *)0) ; | 0 |
| 354 | ; never executed: needle_last_ccount = ((void *)0) ; | 0 |
| 355 | last_ccount = comparison_count; | - |
| 356 | } never executed: end of block | 0 |
| 357 | if (needle_last_ccount == | TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 358 | ((void *)0)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 359 | ) | - |
| 360 | { | - |
| 361 | | - |
| 362 | const unsigned char *result; | - |
| 363 | | - |
| 364 | _Bool | - |
| 365 | success = | - |
| 366 | knuth_morris_pratt ((const unsigned char *) haystack, | - |
| 367 | (const unsigned char *) (needle - 1), | - |
| 368 | strlen (needle - 1), | - |
| 369 | &result); | - |
| 370 | if (success| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 371 | return never executed: return (char *) result; (char *) result;never executed: return (char *) result; | 0 |
| 372 | try_kmp = | - |
| 373 | 0 | - |
| 374 | ; | - |
| 375 | } never executed: end of block | 0 |
| 376 | } never executed: end of block | 0 |
| 377 | | - |
| 378 | outer_loop_count++; | - |
| 379 | comparison_count++; | - |
| 380 | if (*| TRUE | never evaluated | | FALSE | never evaluated |
haystack == b| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 381 | | - |
| 382 | { | - |
| 383 | const char *rhaystack = haystack + 1; | - |
| 384 | const char *rneedle = needle; | - |
| 385 | | - |
| 386 | for (;; rhaystack++, rneedle++) | - |
| 387 | { | - |
| 388 | if (*| TRUE | never evaluated | | FALSE | never evaluated |
rneedle == '\0'| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 389 | | - |
| 390 | return never executed: return (char *) haystack; (char *) haystack;never executed: return (char *) haystack; | 0 |
| 391 | if (*| TRUE | never evaluated | | FALSE | never evaluated |
rhaystack == '\0'| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 392 | | - |
| 393 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
| 394 | ((void *)0) never executed: return ((void *)0) ; | 0 |
| 395 | ; never executed: return ((void *)0) ; | 0 |
| 396 | comparison_count++; | - |
| 397 | if (*| TRUE | never evaluated | | FALSE | never evaluated |
rhaystack != *rneedle| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 398 | | - |
| 399 | break; never executed: break; | 0 |
| 400 | } never executed: end of block | 0 |
| 401 | } never executed: end of block | 0 |
| 402 | } never executed: end of block | 0 |
| 403 | } never executed: end of block | 0 |
| 404 | else | - |
| 405 | return never executed: return (char *) haystack; (char *) haystack;never executed: return (char *) haystack; | 0 |
| 406 | } | - |
| 407 | } | - |
| | |