If rand() & 0xfff is equal to 0xfff, then the range computation would
overflow past max value due to float inaccuracy.
Changed the order of terms to prevent overflow (whilst retaining
compile time division).
Change-Id: I286e0b5c31438f32f59e53dc7a8745745369d16e
Signed-off-by: David Steele <david.steele@samsung.com>
Signed-off-by: Adeel Kazmi <adeel.kazmi@samsung.com>
#define __DALI_RANDOM_H__
/*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
static bool initialized( false );
if( !initialized )
{
- srand( time( NULL ) );
+ auto seed = time( NULL );
+ srand( seed );
initialized = true;
}
- return min + (rand() & 0xfff) * (max-min) * (1.0f/4095.0f);
+ auto randValue = rand();
+ return (randValue & 0xfff) * (1.0f/4095.0f) * (max-min) + min;
}
/**