mirror of
				https://gitlab.gnome.org/GNOME/glib.git
				synced 2025-10-31 00:12:19 +01:00 
			
		
		
		
	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:
		| @@ -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); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user