From 4cc405271f31370299023a38e6779dfcb87a38ff Mon Sep 17 00:00:00 2001
From: Per Hedbor <ph@opera.com>
Date: Sat, 10 May 2014 19:20:26 +0200
Subject: [PATCH] Some fixes to binary_findstring

Mainly avoid type warnings by casting everything to void*.
---
 src/stralloc.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/stralloc.c b/src/stralloc.c
index 028dd8ef04..54c483957a 100644
--- a/src/stralloc.c
+++ b/src/stralloc.c
@@ -531,13 +531,15 @@ struct pike_string *binary_findstring_pcharp(PCHARP foo, ptrdiff_t l)
   int in = foo.shift;
   void *tmp = NULL;
   struct pike_string *res;
+  if( !foo.shift )
+    return binary_findstring( (void*)foo.ptr, l );
   
-  if( foo.shift == 2 )
+  if( UNLIKELY(foo.shift == 2) )
     foo.shift=find_magnitude2( (void*)foo.ptr, l );
   else if( foo.shift == 1 )
     foo.shift=find_magnitude1( (void*)foo.ptr, l );
 
-  if( foo.shift != in )
+  if( UNLIKELY(foo.shift != in) )
   {
     tmp = malloc( l * (1<<foo.shift) );
     switch(in)
@@ -554,7 +556,7 @@ struct pike_string *binary_findstring_pcharp(PCHARP foo, ptrdiff_t l)
     foo.ptr = tmp;
   }
 
-  res=internal_findstring(foo.ptr, l, foo.shift, 
+  res=internal_findstring((void*)foo.ptr, l, foo.shift, 
 			  low_do_hash(foo.ptr,l,foo.shift));
 
   if( tmp )
-- 
GitLab