From 1e064b757f4b62139ffbba96fae3867242c1385c Mon Sep 17 00:00:00 2001
From: Tim Terriberry <tterribe@xiph.org>
Date: Thu, 14 Oct 2010 16:06:44 +0000
Subject: [PATCH] Fix _lookup_serial to compare with proper types.

Storing a serial number in a long and comparing it to an ogg_uint32_t only
 works if you cast the long down, instead of letting C promote it.


git-svn-id: https://svn.xiph.org/trunk/Tremor@17536 0101bb08-14d6-0310-b084-bc0e0c8e3800
---
 vorbisfile.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/vorbisfile.c b/vorbisfile.c
index bc4b153..892d96e 100644
--- a/vorbisfile.c
+++ b/vorbisfile.c
@@ -194,7 +194,7 @@ static void _add_serialno(ogg_page *og,ogg_uint32_t **serialno_list, int *n){
 }
 
 /* returns nonzero if found */
-static int _lookup_serialno(long s, ogg_uint32_t *serialno_list, int n){
+static int _lookup_serialno(ogg_uint32_t s, ogg_uint32_t *serialno_list, int n){
   if(serialno_list){
     while(n--){
       if(*serialno_list == s) return 1;
@@ -205,7 +205,7 @@ static int _lookup_serialno(long s, ogg_uint32_t *serialno_list, int n){
 }
 
 static int _lookup_page_serialno(ogg_page *og, ogg_uint32_t *serialno_list, int n){
-  long s = ogg_page_serialno(og);
+  ogg_uint32_t s = ogg_page_serialno(og);
   return _lookup_serialno(s,serialno_list,n);
 }
 
@@ -246,12 +246,12 @@ static ogg_int64_t _get_prev_page_serial(OggVorbis_File *vf,
         ret_gran=ogg_page_granulepos(&og);
         offset=ret;
 
-        if(ret_serialno == *serialno){
+        if((ogg_uint32_t)ret_serialno == *serialno){
           prefoffset=ret;
           *granpos=ret_gran;
         }
 
-        if(!_lookup_serialno(ret_serialno,serial_list,serial_n)){
+        if(!_lookup_serialno((ogg_uint32_t)ret_serialno,serial_list,serial_n)){
           /* we fell off the end of the link, which means we seeked
              back too far and shouldn't have been looking in that link
              to begin with.  If we found the preferred serial number,
-- 
GitLab