Wes McKinney created ARROW-3790: ----------------------------------- Summary: [C++] Signed to unsigned integer cast yields incorrect results when type sizes are the same Key: ARROW-3790 URL: https://issues.apache.org/jira/browse/ARROW-3790 Project: Apache Arrow Issue Type: Bug Components: C++ Reporter: Wes McKinney Fix For: 0.12.0
In https://github.com/apache/arrow/blob/master/cpp/src/arrow/compute/kernels/cast.cc#L239, an {{int32_t}} is overflows in {code} constexpr in_type kMax = static_cast<in_type>(std::numeric_limits<out_type>::max()); {code} resulting in safety checks not being correctly performed {code} In [2]: arr = pa.array([-1, -2, -3], type='int32') In [3]: arr.cast('uint32') Out[3]: <pyarrow.lib.UInt32Array object at 0x7f4889457b88> [ 4294967295, 4294967294, 4294967293 ] {code} This would be expected to error when {{safe=True}} -- This message was sent by Atlassian JIRA (v7.6.3#76005)