Fix wraparound
This commit is contained in:
+6
-6
@@ -144,8 +144,8 @@ static const char* g_shortParamNames[NUM_PARAMS] =
|
|||||||
{ "wlog", "clog", "hlog","slog", "slen", "tlen", "strt", "fadt" };
|
{ "wlog", "clog", "hlog","slog", "slen", "tlen", "strt", "fadt" };
|
||||||
|
|
||||||
/* maps value from { 0 to rangetable[param] - 1 } to valid paramvalues */
|
/* maps value from { 0 to rangetable[param] - 1 } to valid paramvalues */
|
||||||
static U32 rangeMap(varInds_t param, U32 ind) {
|
static U32 rangeMap(varInds_t param, int ind) {
|
||||||
ind = MIN(ind, rangetable[param] - 1);
|
ind = MAX(MIN(ind, (int)rangetable[param] - 1), 0);
|
||||||
switch(param) {
|
switch(param) {
|
||||||
case tlen_ind:
|
case tlen_ind:
|
||||||
return tlen_table[ind];
|
return tlen_table[ind];
|
||||||
@@ -166,7 +166,7 @@ static U32 rangeMap(varInds_t param, U32 ind) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* inverse of rangeMap */
|
/* inverse of rangeMap */
|
||||||
static U32 invRangeMap(varInds_t param, U32 value) {
|
static int invRangeMap(varInds_t param, U32 value) {
|
||||||
value = MIN(MAX(mintable[param], value), maxtable[param]);
|
value = MIN(MAX(mintable[param], value), maxtable[param]);
|
||||||
switch(param) {
|
switch(param) {
|
||||||
case tlen_ind: /* bin search */
|
case tlen_ind: /* bin search */
|
||||||
@@ -186,7 +186,7 @@ static U32 invRangeMap(varInds_t param, U32 value) {
|
|||||||
return lo;
|
return lo;
|
||||||
}
|
}
|
||||||
case fadt_ind:
|
case fadt_ind:
|
||||||
return value + 1;
|
return (int)value + 1;
|
||||||
case wlog_ind:
|
case wlog_ind:
|
||||||
case clog_ind:
|
case clog_ind:
|
||||||
case hlog_ind:
|
case hlog_ind:
|
||||||
@@ -196,7 +196,7 @@ static U32 invRangeMap(varInds_t param, U32 value) {
|
|||||||
return value - mintable[param];
|
return value - mintable[param];
|
||||||
case NUM_PARAMS:
|
case NUM_PARAMS:
|
||||||
DISPLAY("Error, not a valid param\n ");
|
DISPLAY("Error, not a valid param\n ");
|
||||||
return (U32)-1;
|
return -2;
|
||||||
}
|
}
|
||||||
return 0; /* should never happen, stop compiler warnings */
|
return 0; /* should never happen, stop compiler warnings */
|
||||||
}
|
}
|
||||||
@@ -1545,7 +1545,7 @@ static unsigned memoTableIndDirect(const paramValues_t* ptr, const varInds_t* va
|
|||||||
for(i = 0; i < varyLen; i++) {
|
for(i = 0; i < varyLen; i++) {
|
||||||
varInds_t v = varyParams[i];
|
varInds_t v = varyParams[i];
|
||||||
if(v == strt_ind) continue; /* exclude strategy from memotable */
|
if(v == strt_ind) continue; /* exclude strategy from memotable */
|
||||||
ind *= rangetable[v]; ind += invRangeMap(v, ptr->vals[v]);
|
ind *= rangetable[v]; ind += (unsigned)invRangeMap(v, ptr->vals[v]);
|
||||||
}
|
}
|
||||||
return ind;
|
return ind;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user