<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/105979>105979</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            clang-tidy Fails to Detect WRAPPER_ESCAPE Issues in Code Analysis
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang-tidy
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          zxyzxy1111
      </td>
    </tr>
</table>

<pre>
    **Background:**
While analyzing the code,I have discovered that these codes may have WRAPPER_ESCAPE issues, but clang-tidy is unable to detect them.
**Issue 1:**
The known error code is located at: `opencv/3rdparty/openexr/IlmImf/ImfDwaCompressor.cpp
The error function code is as follows:
![image](https://github.com/user-attachments/assets/7ae11ce3-fe25-4f5b-abf1-13ce44a41efc)
![image](https://github.com/user-attachments/assets/79d010b7-bc8e-4dea-bfb6-4cbd679e3892)
![image](https://github.com/user-attachments/assets/b1091d45-0d14-4b18-8ced-4135567d6c1f)

Specifically, this error reports that the internal representation of the local variable `tmpHalfBuffer` is transferred to `this->_rowPtrs[chan][y]` in the `Imf_opencv::DwaCompressor::LossyDctEncoderBase::execute` function, but it is destroyed when exiting the scope. This situation may lead to undefined behavior or program crashes.



**Usage of the local variable `tmpHalfBuffer`:**
- At line 1388, the condition `tmpHalfBufferElements` is true.
- At line 1389, `operator[]` is called, extracting the wrapped state of the local variable `tmpHalfBuffer` and assigning it to `tmpHalfBufferPtr`.

**Continuing the Loop:**
- At line 1397, the condition `chan < this->_rowPtrs.size()` is true.
- At line 1399, the condition `this->_type[chan] != Imf_opencv::FLOAT` is true, continuing the loop.

**Nested Loop:**
- At line 1402, the condition `y < this->_height` is true.
- At line 1408, the condition `x < this->_width` is true.
These conditional judgments and loops appear multiple times in the code, indicating that the code iterates multiple times when processing the width and height of the image.

**Main Issue:**
- At line 1428, the internal representation of the local variable `tmpHalfBuffer` is transferred to `this->_rowPtrs[chan][y]`, but it is destroyed when exiting the scope. This means that the contents of `tmpHalfBuffer` will be destroyed when the function exits, but its reference is still stored in `this->_rowPtrs[chan][y]`, which may lead to undefined behavior or program crashes.

**Issue 2:**
`ogre/RenderSystems/GLSupport/src/GLSL/OgreGLSLShaderCommon.cpp
![image](https://github.com/user-attachments/assets/97ce9e4c-16c6-463b-bae0-1072307acbe0)
- Line 96: `src` is assigned to `mSource.c_str()`, at this point `src` points to the internal data of `mSource`.
- Line 103: `mSource` is reassigned to `String(out, out_size)`, which may cause the internal data of `mSource` to be reallocated or modified.
- Line 104: `if (out < src || out > src + src_len)`, at this point `src` may already point to invalid memory because the internal data of `mSource` has been modified.

**Summary:**
The internal representation of `this->mSource` is used after being invalidated, leading to potential undefined behavior. This belongs to WRAPPER-ESCAPE.
- Line: 101
  - Description: End of the `if` statement.
  - Calling `operator=` invalidates the internal representation of `this->mSource`.
- Line: 103
  - Description: Calling `operator=` invalidates the internal representation of `this->mSource`.
- Line: 104
  - Description: Using the invalidated internal representation of `this->mSource`.

**Thoughts:**
Are the error reports correct? Why did the clang-tidy WRAPPER_ESCAPE related rules not report any errors? Where is the problem? How should it be  resolved?    
@NagyDonat @evanphx @haberman . Do you have any suggestions?
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEWN1u6zYSfhr6hpAhUZJtXfjCieNtgGwbNCnOZUCRI4ktRQokZUfn6Rek5PjnuOlp92D3JlYocuabmW9-KGqtqBXAGuV3KN_OaO8abdZf34ev70OSJMms1HxYI7JBZHNH2R-10b3iKN2MSyjeonjzpRESMFVUDl-FqrFrADPNAZH7R9zQPWAuLNN7MMCxa6jzO-y4x-KWDuOmL79unp8ffn17eLnfPD9gYW0PFpF7XPYOM0lVHTnBByws7hUtJWCnMQcHLAhs5yOaEdmjP42TK6SvDeA_lD4oDMZoExB4eVIz6oBj6lC6wWgR6w4U2yOySw3vqHEDIju_Bu8Gkd2jbB_byj-01fZA73XbGbBWmznrupOmUUfVK-aEVh_KqMWVllIfrEc3YU5QfidaWgPKt4isGue68JrsENnVwjV9OWe6RWTXWzARdY6ypgXlLCI7ai2EhyWFJGGQRhWQPMqqvIxoWSVRkjLIMpolUDFEih-stOBxEpfLqGQriDIONCqrchFlrOSLZQHpqiA_XGmZxEXCszyKeZJFWZmsohUDHmVJmueLJV-wpDopDX9fOmCiEoxKOXhauUbYKUYGOm2c_SAnFsqBUVT6NwYsKEdDDHUVXnu-SLynRgQeokXs2u4nKqu7vqrAoEXsA-0MVbYCE2ivw65G2AilD29GH56dsSi_Yw1V3hP53eB__EkVdKBF_NhWbxMT0w1KNxdcG5eetLXDlrkH5ell7qiF8QW8A-sdeIFHBh5zSTiPjoN1Rg_A8aEBheFduGPyWqY7mONX7yArXD_a7hNVAg229IpDJRRwXEJD90IbrA3ujK4NbTEz1DZg5-fev_gbUvI3S2v4fo9epXKENw5LoQAn6Wo1xtOXFMVFQHst4UHCSKJjbHqY35BUeEljATDUaTMWxumQpw5wvwPenaHsw2EHQ7sOOLaOur9hEqaK47EGe0nCHWlyvu_Z-a3zb_13r5UTqj9ieNK6-8RHxfKmjzz9MErHbDin5tyKr4DIyifRpy4ritvOP8pzQwcnnmNfANItvqb27umXzeuZIi-TXRoote5uuOFnsL50f25-FpObKIdL2xsQdeM-tTeLb5Pt_VLSQXDXfCvodWp800Eq8e89rwMxAxm8jRZ7MlGD21460fk-J1qwx7owdVYsFBeMThScytbYYpynru-sl-dDmndGM7D2g7geZtA8mn7kbijQN5z9byoUDr31E1-TDw_9H8voPyp2LVBlz92pXAiNrm6COwgpcQnX0v3Rj67vVdkTGIsNVGBAsTALWOdFWKe9cUL9HeMOjWDNf1uUz2YlchVRXwRrA4jsfgXFwbwM1kHre--_nl76zjdMRHbWsHHlCZHdL7UB__jSUA7mXretVqeR6Ee1_mLJoICMRcmCLaJskZZRSSGOknhJ0nhJWQnxR-uP8JMnZbGYBjuPd6TVNPseOdW-6N4wmLM368xH3fOODmQQFndaKHcmI_xv_fELqnPq6ESYSeapfE9okjid4Jx2eEgGrkC9OCNUjchK985D0b17G-ty8Q0LGO0tfAcUL7oEr0sex15tcKu5qATwa6DZBFRUeIQRypw1DKPlPVoGSBilD-MSufO_bxLUX7vPY6bSAOXD9M5pLNSeSsFxC602Ay7hu61qqMUlgLq25JzoL33bUjPcuBR8UqjOUvIyWr31N4bKgcElhP49gvcu9Yb7tAxFRuNO-zoiqLyRo1PpKUFqVQc6TRehaLwIXUTERyOJk3EJ4whvwTIjujDepRv8oPixuIageahhKPFZND8du6dSemznk046TZ9HI-xflfCbnrkBN_1TuP9TGNmfwvjtox-ehfCfqjwn3Guj-7px9opxGzNS-vLywbQxwBxKd_hLM2Au-NiETjffqxuyARmAml6CxUq7SRSmahhl21EYmNBsvLTO6FJC69d_0gdsG91L7ptkCRgbsFrugfu3GOPJkiz-mdbDVivqMMpi2FPVNe_-saElmJYqPMdbjQfdjxd5r972dQ3W-8tjmPF1you0oDNYJ0uS5ct8QRazZl2lkJUVqcolkLzMkmRRLJZVnKfFKk44FDOxJjHJ4hXJ41W2jBfznGfVqlqssnhZ8hWsPKKWCjmXct_Otaln4cPBOonzYlnMJC1B2vB9g5CTKxEhKN_OzNqfisq-tiiLpbDOnuQ44SSsz9y_o0KGBN2OHx2uwhHaaBjT7v0YtlFUDlbYWW_k-pNW5_VNP1Fn9O-eAmR3_Pqxm-zYr8l_AgAA__96ra-O">