| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
|
I don't understand why this is necessary. Where is the downcast happening? |
Sorry, something went wrong.
|
I'm sorry, I forgot to copy the compiler warning. I looked at a recent AMD64 build on Windows buildbots: d:\buildarea\3.x.bolen-windows10\build\python\ast.c(4316): warning C4244: '+=': conversion from '__int64' to 'int', possible loss of data [D:\buildarea\3.x.bolen-windows10\build\PCbuild\pythoncore.vcxproj] ast.c:4316: int cols = parent->n_col_offset;
(...)
cols += substr - start; // <--- HERE
|
Sorry, something went wrong.
|
The warning is because substr and start are addresses so they're 64 bit. But their subtraction is never going to exceed 32 bits (a single line of code exceeding 4 billion characters? Nope). Rather than change col_offset from an int to Py_ssize_t, maybe let's just cast the subtraction on line 4316 to (int)? If you'd rather keep Py_ssize_t, also change lineno to this type. |
Sorry, something went wrong.
ast.c: fstring_fix_node_location() downcasts a pointer difference to a C int. Replace int with Py_ssize_t to fix the compiler warning.
I looked again at the code, and I think that using Py_ssize_t is wrong because node uses int: typedef struct _node {
...
int n_lineno;
int n_col_offset;
...
} node;
I modified my PR to explicitly downcast to int. |
Sorry, something went wrong.
|
@ambv: Please replace # with GH- in the commit message next time. Thanks! |
Sorry, something went wrong.
|
Exactly! Thanks! ✨ 🍰 ✨ |
Sorry, something went wrong.
* bpo-9566: Fix compiler warnings in gcmodule.c (GH-11010) Change PyDTrace_GC_DONE() argument type from int to Py_ssize_t. (cherry picked from commit edad38e) * bpo-30465: Fix C downcast warning on Windows in ast.c (#6593) ast.c: fstring_fix_node_location() downcasts a pointer difference to a C int. Replace int with Py_ssize_t to fix the compiler warning. (cherry picked from commit fb7e799) * bpo-9566: Fix compiler warnings in peephole.c (GH-10652) (cherry picked from commit 028f0ef) * bpo-27645, sqlite: Fix integer overflow on sleep (#6594) Use the _PyTime_t type and round away from zero (ROUND_UP, _PyTime_ROUND_TIMEOUT) the sleep duration, when converting a Python object to seconds and then to milliseconds. Raise an OverflowError in case of overflow. Previously the (int)double conversion rounded towards zero (ROUND_DOWN). (cherry picked from commit ca40501)
| Back | FazBrowse Home | New Git URL |
ast.c: fstring_fix_node_location() downcasts a pointer difference to
a C int. Replace int with Py_ssize_t to fix the compiler warning.
https://bugs.python.org/issue30465