Submitted By: Douglas R. Reno Date: 2025-08-14 Initial Package Version: 1.2.13 Origin: Upstream (commits a38be3 and b5fd08) Upstream Status: Applied Description: Fixes building xine-lib-1.2.13 with gcc-15 by adjusting it's qsort compare wrappers. GCC 15 no longer accepts "type (*func) ()" as a generic pointer to any function returning "type", so xine-lib needed to be adjusted. diff -Naurp xine-lib-1.2.13.orig/contrib/libfaad/sbr_fbt.c xine-lib-1.2.13/contrib/libfaad/sbr_fbt.c --- xine-lib-1.2.13.orig/contrib/libfaad/sbr_fbt.c 2018-07-14 11:11:45.000000000 -0500 +++ xine-lib-1.2.13/contrib/libfaad/sbr_fbt.c 2025-08-14 20:04:42.464839821 -0500 @@ -107,7 +107,10 @@ uint8_t qmf_start_channel(uint8_t bs_sta static int longcmp(const void *a, const void *b) { - return ((int)(*(int32_t*)a - *(int32_t*)b)); + const int32_t *d = (const int32_t *)a; + const int32_t *e = (const int32_t *)b; + + return(int)(*d - *e); } /* calculate the stop QMF channel for the master frequency band table */ diff -Naurp xine-lib-1.2.13.orig/src/input/input_file.c xine-lib-1.2.13/src/input/input_file.c --- xine-lib-1.2.13.orig/src/input/input_file.c 2023-01-25 10:03:17.000000000 -0600 +++ xine-lib-1.2.13/src/input/input_file.c 2025-08-14 20:09:44.528122725 -0500 @@ -651,8 +651,11 @@ static int file_input_strverscmp (const /* * Wrapper to file_input_strverscmp() for qsort() calls, which sort mrl_t type array. */ -static int file_input_sortfiles_default (const xine_mrl_t *s1, const xine_mrl_t *s2) { - return(file_input_strverscmp(s1->mrl, s2->mrl)); +static int file_input_sortfiles_default (const void *a, const void *b) { + const xine_mrl_t *d = (const xine_mrl_t *)a; + const xine_mrl_t *e = (const xine_mrl_t *)b; + + return file_input_strverscmp (d->mrl, e->mrl); } /* @@ -735,7 +738,7 @@ static xine_mrl_t **file_input_class_get int num_dir_files = 0; int num_norm_files = 0; int num_files = -1; - int (*func) () = file_input_sortfiles_default; + int (*cmp) (const void *a, const void *b) = file_input_sortfiles_default; int already_tried = 0; int show_hidden_files; @@ -915,13 +918,13 @@ static xine_mrl_t **file_input_class_get * Sort arrays */ if(num_dir_files) - qsort(dir_files, num_dir_files, sizeof(xine_mrl_t), func); + qsort(dir_files, num_dir_files, sizeof(xine_mrl_t), cmp); if(num_hide_files) - qsort(hide_files, num_hide_files, sizeof(xine_mrl_t), func); + qsort(hide_files, num_hide_files, sizeof(xine_mrl_t), cmp); if(num_norm_files) - qsort(norm_files, num_norm_files, sizeof(xine_mrl_t), func); + qsort(norm_files, num_norm_files, sizeof(xine_mrl_t), cmp); /* * Add directories entries diff -Naurp xine-lib-1.2.13.orig/src/input/input_smb.c xine-lib-1.2.13/src/input/input_smb.c --- xine-lib-1.2.13.orig/src/input/input_smb.c 2020-06-29 16:11:48.000000000 -0500 +++ xine-lib-1.2.13/src/input/input_smb.c 2025-08-14 20:12:43.628114861 -0500 @@ -231,8 +231,11 @@ static int _strverscmp(const char *s1, c /* * Wrapper to _strverscmp() for qsort() calls, which sort mrl_t type array. */ -static int _sortfiles_default(const xine_mrl_t *s1, const xine_mrl_t *s2) { - return(_strverscmp(s1->mrl, s2->mrl)); +static int smb_input_sortfiles_default(const void *a, const void *b) { + const xine_mrl_t *d = (const xine_mrl_t *)a; + const xine_mrl_t *e = (const xine_mrl_t *)b; + + return _strverscmp (d->mrl, e->mrl); } @@ -240,7 +243,7 @@ static xine_mrl_t **smb_class_get_dir (i const char *filename, int *nFiles) { smb_input_class_t *this = (smb_input_class_t *) this_gen; - int (*func) () = _sortfiles_default; + int (*cmp) (const void *a, const void *b) = smb_input_sortfiles_default; int dir; int i; struct smbc_dirent *pdirent; @@ -339,10 +342,10 @@ static xine_mrl_t **smb_class_get_dir (i * Sort arrays */ if(num_dir_files) - qsort(dir_files, num_dir_files, sizeof(xine_mrl_t), func); + qsort(dir_files, num_dir_files, sizeof(xine_mrl_t), cmp); if(num_norm_files) - qsort(norm_files, num_norm_files, sizeof(xine_mrl_t), func); + qsort(norm_files, num_norm_files, sizeof(xine_mrl_t), cmp); /* * Add directories entries