closes bpo-39605: Fix some casts to not cast away const. (GH-18453)
gcc -Wcast-qual turns up a number of instances of casting away constness of pointers. Some of these can be safely modified, by either:
Adding the const to the type cast, as in:
- return _PyUnicode_FromUCS1((unsigned char*)s, size);
+ return _PyUnicode_FromUCS1((const unsigned char*)s, size);
or, Removing the cast entirely, because it's not necessary (but probably was at one time), as in:
- PyDTrace_FUNCTION_ENTRY((char *)filename, (char *)funcname, lineno);
+ PyDTrace_FUNCTION_ENTRY(filename, funcname, lineno);
These changes will not change code, but they will make it much easier to check for errors in consts
diff --git a/Python/ceval.c b/Python/ceval.c
index eb0f131..426d0bb 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -5440,7 +5440,7 @@
funcname = PyUnicode_AsUTF8(f->f_code->co_name);
lineno = PyCode_Addr2Line(f->f_code, f->f_lasti);
- PyDTrace_FUNCTION_ENTRY((char *)filename, (char *)funcname, lineno);
+ PyDTrace_FUNCTION_ENTRY(filename, funcname, lineno);
}
static void
@@ -5454,7 +5454,7 @@
funcname = PyUnicode_AsUTF8(f->f_code->co_name);
lineno = PyCode_Addr2Line(f->f_code, f->f_lasti);
- PyDTrace_FUNCTION_RETURN((char *)filename, (char *)funcname, lineno);
+ PyDTrace_FUNCTION_RETURN(filename, funcname, lineno);
}
/* DTrace equivalent of maybe_call_line_trace. */
@@ -5486,7 +5486,7 @@
co_name = PyUnicode_AsUTF8(frame->f_code->co_name);
if (!co_name)
co_name = "?";
- PyDTrace_LINE((char *)co_filename, (char *)co_name, line);
+ PyDTrace_LINE(co_filename, co_name, line);
}
*instr_prev = frame->f_lasti;
}
diff --git a/Python/marshal.c b/Python/marshal.c
index 04a8dc5..4a23df1 100644
--- a/Python/marshal.c
+++ b/Python/marshal.c
@@ -734,7 +734,7 @@
else {
const char *ptr = r_string(1, p);
if (ptr != NULL)
- c = *(unsigned char *) ptr;
+ c = *(const unsigned char *) ptr;
}
return c;
}
diff --git a/Python/pyhash.c b/Python/pyhash.c
index d381dc0..faac730 100644
--- a/Python/pyhash.c
+++ b/Python/pyhash.c
@@ -366,7 +366,7 @@
static uint64_t
siphash24(uint64_t k0, uint64_t k1, const void *src, Py_ssize_t src_sz) {
uint64_t b = (uint64_t)src_sz << 56;
- const uint8_t *in = (uint8_t*)src;
+ const uint8_t *in = (const uint8_t*)src;
uint64_t v0 = k0 ^ 0x736f6d6570736575ULL;
uint64_t v1 = k1 ^ 0x646f72616e646f6dULL;
diff --git a/Python/sysmodule.c b/Python/sysmodule.c
index a7f8c0b..cacff52 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -204,7 +204,7 @@
/* Dtrace USDT point */
if (dtrace) {
- PyDTrace_AUDIT((char *)event, (void *)eventArgs);
+ PyDTrace_AUDIT(event, (void *)eventArgs);
}
/* Call interpreter hooks */