From 8fc72e2c5f697566fed7e763b873d017d2b4605c Mon Sep 17 00:00:00 2001
From: Martin Nilsson <nilsson@opera.com>
Date: Thu, 23 Oct 2014 01:26:20 +0200
Subject: [PATCH] Fixed warning.

---
 src/builtin_functions.c | 21 ++++++++++++++-------
 1 file changed, 14 insertions(+), 7 deletions(-)

diff --git a/src/builtin_functions.c b/src/builtin_functions.c
index 4c14164221..21eadca473 100644
--- a/src/builtin_functions.c
+++ b/src/builtin_functions.c
@@ -809,19 +809,26 @@ PMOD_EXPORT void f_upper_case(INT32 args)
 PMOD_EXPORT void f_random_string(INT32 args)
 {
   struct pike_string *ret;
-  INT_TYPE len, e;
+  INT_TYPE len, e = 0;
+  unsigned INT32 *str;
   get_all_args("random_string",args,"%+",&len);
   ret = begin_shared_string(len);
 
   /* Note: Assumes pike_string->str is aligned on a 4 byte boundary
    * (it is, currently)
    */
-  len -= sizeof(INT32)-1;
-  for(e=0;e<len;e+=sizeof(INT32))
-      ((unsigned INT32 *)(ret->str+e))[0] = DO_NOT_WARN(my_rand());
-  len += sizeof(INT32)-1;
-  for(;e<len;e++)
-      ret->str[e] = DO_NOT_WARN((char)my_rand());
+  str = (unsigned INT32 *)ret->str;
+
+  while( (e+=sizeof(INT32)) <= len )
+  {
+    str[0] = DO_NOT_WARN(my_rand());
+    str++;
+  }
+
+  for(e-=sizeof(INT32);e<len;e++)
+  {
+    ret->str[e] = DO_NOT_WARN((char)my_rand());
+  }
 
   pop_n_elems(args);
   push_string(end_shared_string(ret));
-- 
GitLab