carrerasdarren-cell opened a new pull request, #51126:
URL: https://github.com/apache/arrow/pull/51126

   ### Rationale for this change
   
   `BufferReader.readinto()` currently segfaults when passed a read-only 
destination such as `bytes` or a read-only `memoryview`. `py_buffer()` creates 
an immutable Arrow buffer, `mutable_data()` returns a null pointer, and the C++ 
read path attempts to copy into that pointer. A Python API misuse should raise 
a Python exception rather than terminate the interpreter.
   
   ### What changes are included in this PR?
   
   - Validate that a `NativeFile.readinto()` destination is mutable before 
obtaining its writable pointer.
   - Raise `TypeError` for immutable destinations.
   - Add regression coverage for `bytes` and read-only `memoryview` 
destinations.
   
   ### Are these changes tested?
   
   Yes. The focused `readinto` tests pass against a locally compiled patched 
`pyarrow.lib`. The stock 25.0.1 wheel exits with status 139 for the issue 
reproducer, while the patched build raises the expected `TypeError`; the 
writable `bytearray` control continues to read successfully.
   
   ### Are there any user-facing changes?
   
   Yes. Passing a read-only destination to `NativeFile.readinto()` now raises 
`TypeError` instead of terminating the interpreter. Writable-buffer behavior is 
unchanged.
   
   Fixes #51044.
   
   This contribution was developed with assistance from OpenAI Codex. I 
reviewed, tested, and take responsibility for the patch and this description.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to