https://github.com/python/cpython/commit/59ef77b7a8e2e56659c2314fdfb58835b515b38c
commit: 59ef77b7a8e2e56659c2314fdfb58835b515b38c
branch: 3.15
author: Miss Islington (bot) <[email protected]>
committer: vstinner <[email protected]>
date: 2026-11-08T19:42:05Z
summary:

[3.15] gh-161625: Fix compiler warnings in _remote_debugging (GH-161626) 
(#161638)

gh-161625: Fix compiler warnings in _remote_debugging (GH-161626)

Fix compiler warnings when Python is built in 32-bit mode on Windows.
(cherry picked from commit dcf90877e47b15d3e364b7b1855c44f1832fa253)

Co-authored-by: Victor Stinner <[email protected]>

files:
M Modules/_remote_debugging/binary_io_reader.c
M Modules/_remote_debugging/frames.c
M Modules/_remote_debugging/gc_stats.c
M Modules/_remote_debugging/object_reading.c
M Modules/_remote_debugging/threads.c

diff --git a/Modules/_remote_debugging/binary_io_reader.c 
b/Modules/_remote_debugging/binary_io_reader.c
index 80627db913ea21b..a51a2e475c9e06b 100644
--- a/Modules/_remote_debugging/binary_io_reader.c
+++ b/Modules/_remote_debugging/binary_io_reader.c
@@ -365,7 +365,7 @@ static inline int
 reader_parse_string_table(BinaryReader *reader, const uint8_t *data, size_t 
file_size)
 {
     if (reader_validate_count("string", reader->strings_count,
-                              file_size - reader->string_table_offset,
+                              file_size - (size_t)reader->string_table_offset,
                               MIN_STRING_ENTRY_SIZE) < 0) {
         return -1;
     }
@@ -376,7 +376,7 @@ reader_parse_string_table(BinaryReader *reader, const 
uint8_t *data, size_t file
         return -1;
     }
 
-    size_t offset = reader->string_table_offset;
+    size_t offset = (size_t)reader->string_table_offset;
     for (uint32_t i = 0; i < reader->strings_count; i++) {
         size_t prev_offset = offset;
         uint32_t str_len = decode_varint_u32(data, &offset, file_size);
@@ -411,7 +411,7 @@ reader_parse_frame_table(BinaryReader *reader, const 
uint8_t *data, size_t file_
 #endif
 
     if (reader_validate_count("frame", reader->frames_count,
-                              file_size - reader->frame_table_offset,
+                              file_size - (size_t)reader->frame_table_offset,
                               MIN_FRAME_ENTRY_SIZE) < 0) {
         return -1;
     }
@@ -423,7 +423,7 @@ reader_parse_frame_table(BinaryReader *reader, const 
uint8_t *data, size_t file_
         return -1;
     }
 
-    size_t offset = reader->frame_table_offset;
+    size_t offset = (size_t)reader->frame_table_offset;
     for (uint32_t i = 0; i < reader->frames_count; i++) {
         FrameEntry *frame = &reader->frames[i];
         size_t prev_offset;
@@ -694,7 +694,7 @@ binary_reader_open(PyObject *path)
 #endif
     } else {
         reader->sample_data = data + FILE_HEADER_PLACEHOLDER_SIZE;
-        reader->sample_data_size = reader->string_table_offset - 
FILE_HEADER_PLACEHOLDER_SIZE;
+        reader->sample_data_size = (size_t)reader->string_table_offset - 
FILE_HEADER_PLACEHOLDER_SIZE;
     }
 
     /* Parse string and frame tables */
@@ -871,7 +871,7 @@ decode_stack_suffix(ReaderThreadState *ts, const uint8_t 
*data,
             return -1;
         }
     }
-    ts->current_stack_depth = final_depth;
+    ts->current_stack_depth = (size_t)final_depth;
     return 0;
 }
 
@@ -916,7 +916,7 @@ decode_stack_pop_push(ReaderThreadState *ts, const uint8_t 
*data,
             return -1;
         }
     }
-    ts->current_stack_depth = final_depth;
+    ts->current_stack_depth = (size_t)final_depth;
     return 0;
 }
 
@@ -1262,7 +1262,7 @@ binary_reader_replay(BinaryReader *reader, PyObject 
*collector, PyObject *progre
             reader->stats.total_samples += count;
 
             /* Progress callback after batch */
-            if (replayed % PROGRESS_CALLBACK_INTERVAL < count) {
+            if ((uint64_t)replayed % PROGRESS_CALLBACK_INTERVAL < 
(uint64_t)count) {
                 if (invoke_progress_callback(progress_callback, replayed, 
reader->sample_count) < 0) {
                     return -1;
                 }
diff --git a/Modules/_remote_debugging/frames.c 
b/Modules/_remote_debugging/frames.c
index fde3474a0539190..9eafa478e1943b9 100644
--- a/Modules/_remote_debugging/frames.c
+++ b/Modules/_remote_debugging/frames.c
@@ -461,7 +461,7 @@ clear_last_profiled_frames(RemoteUnwinderObject *unwinder)
         uintptr_t tstate_addr;
         if (_Py_RemoteDebug_PagedReadRemoteMemory(
                 &unwinder->handle,
-                current_interp + 
unwinder->debug_offsets.interpreter_state.threads_head,
+                current_interp + 
(uintptr_t)unwinder->debug_offsets.interpreter_state.threads_head,
                 sizeof(void*),
                 &tstate_addr) < 0) {
             // Non-fatal: just skip clearing
@@ -482,7 +482,7 @@ clear_last_profiled_frames(RemoteUnwinderObject *unwinder)
             // Move to next thread
             if (_Py_RemoteDebug_PagedReadRemoteMemory(
                     &unwinder->handle,
-                    tstate_addr + unwinder->debug_offsets.thread_state.next,
+                    tstate_addr + 
(uintptr_t)unwinder->debug_offsets.thread_state.next,
                     sizeof(void*),
                     &tstate_addr) < 0) {
                 PyErr_Clear();
@@ -493,7 +493,7 @@ clear_last_profiled_frames(RemoteUnwinderObject *unwinder)
         // Move to next interpreter
         if (_Py_RemoteDebug_PagedReadRemoteMemory(
                 &unwinder->handle,
-                current_interp + 
unwinder->debug_offsets.interpreter_state.next,
+                current_interp + 
(uintptr_t)unwinder->debug_offsets.interpreter_state.next,
                 sizeof(void*),
                 &current_interp) < 0) {
             PyErr_Clear();
diff --git a/Modules/_remote_debugging/gc_stats.c 
b/Modules/_remote_debugging/gc_stats.c
index 23fa879b5032837..4dc77803a0a9f3c 100644
--- a/Modules/_remote_debugging/gc_stats.c
+++ b/Modules/_remote_debugging/gc_stats.c
@@ -88,8 +88,8 @@ get_gc_stats_from_interpreter_state(RuntimeOffsets *offsets,
 
     uintptr_t gc_stats_addr = 0;
     uintptr_t gc_stats_pointer_address = interpreter_state_addr
-        + offsets->debug_offsets.interpreter_state.gc
-        + offsets->debug_offsets.gc.generation_stats;
+        + (uintptr_t)offsets->debug_offsets.interpreter_state.gc
+        + (uintptr_t)offsets->debug_offsets.gc.generation_stats;
     if (_Py_RemoteDebug_ReadRemoteMemory(&offsets->handle,
                                          gc_stats_pointer_address,
                                          sizeof(gc_stats_addr),
diff --git a/Modules/_remote_debugging/object_reading.c 
b/Modules/_remote_debugging/object_reading.c
index e449b446a1fe544..6f138f3de3503b6 100644
--- a/Modules/_remote_debugging/object_reading.c
+++ b/Modules/_remote_debugging/object_reading.c
@@ -279,7 +279,7 @@ read_py_long(
     }
 
     // Calculate how many digits fit inline in our local buffer
-    Py_ssize_t ob_digit_offset = unwinder->debug_offsets.long_object.ob_digit;
+    Py_ssize_t ob_digit_offset = 
(Py_ssize_t)unwinder->debug_offsets.long_object.ob_digit;
     Py_ssize_t inline_digits_space = SIZEOF_LONG_OBJ - ob_digit_offset;
     Py_ssize_t max_inline_digits = inline_digits_space / 
(Py_ssize_t)sizeof(digit);
 
diff --git a/Modules/_remote_debugging/threads.c 
b/Modules/_remote_debugging/threads.c
index 120065022ddc8ee..a3bd6c9edfb58eb 100644
--- a/Modules/_remote_debugging/threads.c
+++ b/Modules/_remote_debugging/threads.c
@@ -447,9 +447,9 @@ unwind_stack_for_thread(
             unwinder->debug_offsets.thread_state.current_exception +
             sizeof(uintptr_t));
         uintptr_t exc_state_addr =
-            *current_tstate + unwinder->debug_offsets.thread_state.exc_state;
+            *current_tstate + 
(uintptr_t)unwinder->debug_offsets.thread_state.exc_state;
         uintptr_t exc_value_offset =
-            unwinder->debug_offsets.err_stackitem.exc_value;
+            (uintptr_t)unwinder->debug_offsets.err_stackitem.exc_value;
         uintptr_t previous_item_offset =
             exc_value_offset + sizeof(uintptr_t);
 

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]

Reply via email to