Explicit signed char declarations for portability.

Some platforms (ARM, PowerPC, s390x) have "unsigned char" as the default
char type, and thus the build fails for certain parts of the code where
negative values are assigned to those kind of variables.
This commit is contained in:
Alberto Luaces
2016-09-24 12:33:37 +02:00
parent 3f91c5d970
commit 01c712e851
3 changed files with 4 additions and 4 deletions

View File

@@ -28,7 +28,7 @@ namespace osgDB
int base64_decode_value(char value_in)
{
static const char decoding[] = {62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-2,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51};
static const signed char decoding[] = {62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-2,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51};
static const char decoding_size = sizeof(decoding);
value_in -= 43;
if (value_in < 0 || value_in >= decoding_size) return -1;

View File

@@ -61,7 +61,7 @@ namespace base64
extern const char* to_table;
extern const char* to_table_end;
extern const char* from_table;
extern const signed char* from_table;
template <class InputIterator, class OutputIterator>

View File

@@ -18,7 +18,7 @@ namespace base64
const char* to_table_end =
_to_table + sizeof(_to_table);
const char _from_table[128] =
const signed char _from_table[128] =
{
-1, -1, -1, -1, -1, -1, -1, -1, // 0
-1, -1, -1, -1, -1, -1, -1, -1, // 8
@@ -37,6 +37,6 @@ namespace base64
41, 42, 43, 44, 45, 46, 47, 48, // 112
49, 50, 51, -1, -1, -1, -1, -1 // 120
};
const char* from_table = _from_table;
const signed char* from_table = _from_table;
}