Cast to guintptr instead of subtracting by null

Subtraction by a null pointer is undefined behavior, so it's been
replaced with a cast to guintptr.
This commit is contained in:
TestingPlant 2022-04-30 22:37:03 +00:00
parent 444fc6ccda
commit b4b2f75bfd

View File

@ -263,16 +263,15 @@ msort_r (void *b, size_t n, size_t s, GCompareDataFunc cmp, void *arg)
else else
{ {
if ((s & (sizeof (guint32) - 1)) == 0 if ((s & (sizeof (guint32) - 1)) == 0
&& ((char *) b - (char *) 0) % ALIGNOF_GUINT32 == 0) && (guintptr) b % ALIGNOF_GUINT32 == 0)
{ {
if (s == sizeof (guint32)) if (s == sizeof (guint32))
p.var = 0; p.var = 0;
else if (s == sizeof (guint64) else if (s == sizeof (guint64)
&& ((char *) b - (char *) 0) % ALIGNOF_GUINT64 == 0) && (guintptr) b % ALIGNOF_GUINT64 == 0)
p.var = 1; p.var = 1;
else if ((s & (sizeof (unsigned long) - 1)) == 0 else if ((s & (sizeof (unsigned long) - 1)) == 0
&& ((char *) b - (char *) 0) && (guintptr) b % ALIGNOF_UNSIGNED_LONG == 0)
% ALIGNOF_UNSIGNED_LONG == 0)
p.var = 2; p.var = 2;
} }
msort_with_tmp (&p, b, n); msort_with_tmp (&p, b, n);