<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/64475>64475</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
basic_regex::__search error with "$" pattern
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
alkino
</td>
</tr>
</table>
<pre>
Hello,
If we use a pattern like `$` or something more complex as ` *$` but that does not match the string,
`__search` return `false` as not found because we don't try the empty string.
The problem is the for loop: https://github.com/llvm/llvm-project/blob/ef888bc67c726deb8c74ea32e7c8c9ace756b667/libcxx/include/regex#L6165
An example, is trying to match `$` against `hello`.
We will successively try:
* `hello` (before the loop)
* `ello`
* `llo`
* `lo`
* `o`
And nothing else, and so this is not a match.
It seems that having a last run with `__match_at_start(__last, __last, __m, __flags, false)` (only if `match_not_null` is not set) fix the problem.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUVE2PrDYQ_DXm0srI03wfOEz2aZQn5RgpR2SbBpw19sg2OzP_PjKw2lkll3cB1LTL1VVlixD0ZIk6Vv7Oyh-ZWOPsfCfMu7Yuk254dn-QMY7hG-M_GL_sz58j3AnWQCDgJmIkb8HodwJWcYYFqzg4D8EtFGdtJ1icJ1BuuRl6gAipDRhejla5RoiziDA4CmBdhEVENUOcCUL02k5f21e87wMJr-a00lNcvU1wozCBUknsCKNb7QCSlEgs7wSDswzrCNE_N2BabvF5wJ9eZ_trJrh5Jw0toMPWOzoPxrkbyy8wx3gLLL8wvDK8TjrOqzwptzC8GvPx-frt5t0_pCLDqzROMrzS2DSNVFWtaqwGko2qCxI5Uq0a1QpFdVnJqqoTgJbq8WB41VaZdSCGV08TPRjmf1bnqnxle7FAD5GEZfi28fXPpHh0h4hfjohJaBtiqsybpxU_Bv-b4K6NgbAqRSHoDzLPBJTG3PfCy-syYNhIGpOpSZ5NGmy_tR6d32r_V_pP5aVwDDgkQ7cYUfIY30DYAYKDOOuQRk5-i33cb07-jBCIlrCHaxYfCUOAESGCXy3cddz06fttbS9iH6LwkWHT96kr7fX6teyv0YgppM89dNgekjhrnqDHBLkDWhd7uxqT_h88A0WGLYz6sUl3BO0b7Wzo8qHNW5FRd67ac17zouTZ3AlVc5lXOWE18rKqMVcczxVh2RQttUOmO-SY84bX_MzrnJ_UQApFjqqQNFBdsoLTIrQ5pYyenJ8yHcJKXVUUdZkZIcmE7SpAtHSH7SdDTDeD77Zcy3UKrOBGhxi-UKKOhjopglb9HtX8wvLL51EF8t75Q2_ElEfEz4sjW73pfvlUbdQCw-tG_d8AAAD__2Cmejw">