[all-commits] [llvm/llvm-project] 984354: [lldb] Update some uses of Python2 API in typemaps.

Jorge Gorbe Moya via All-commits all-commits at lists.llvm.org
Wed Mar 22 11:29:59 PDT 2023

  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 984354fbbe4e207798f6d83c6f46b7603952dd36
  Author: Jorge Gorbe Moya <jgorbe at google.com>
  Date:   2023-03-22 (Wed, 22 Mar 2023)

  Changed paths:
    M lldb/bindings/python/python-typemaps.swig
    M lldb/test/API/python_api/sbdata/TestSBData.py

  Log Message:
  [lldb] Update some uses of Python2 API in typemaps.

Python 3 doesn't have a distinction between PyInt and PyLong, it's all
PyLong now.

This also fixes a bug in SetNumberFromObject. This used to crash LLDB:
lldb -o "script data=lldb.SBData(); data.SetDataFromUInt64Array([2**63])"

The problem happened in the PyInt path:
  if (PyInt_Check(obj))
      number = static_cast<T>(PyInt_AsLong(obj));
when obj doesn't fit in a signed long, `PyInt_AsLong` would fail with
"OverflowError: Python int too large to convert to C long".

The existing long path does the right thing, as it will call
`PyLong_AsUnsignedLongLong` for uint64_t.

Differential Revision: https://reviews.llvm.org/D146590

More information about the All-commits mailing list