};
int cmdcodesize = ARRAYSIZE(cmdcodearray);
-int hashtabsize;
+int cmdtabsize;
CMDCODETAB **cmdtype_code, **code_type;
/* 命令と命令タイプからハッシュ値を生成する */
keys[1]->type = INT;
keys[1]->val.i = (int)(type & 070);
/* ハッシュ値を返す */
- return hash(2, keys, cmdcodesize);
+ return hash(2, keys, cmdtabsize);
}
/* 命令と命令タイプがキーのハッシュ表を作成する */
unsigned hashval;
int i;
- hashtabsize = cmdcodesize;
- cmdtype_code = malloc(cmdcodesize * sizeof(CMDCODETAB *));
+ cmdtabsize = cmdcodesize;
+ cmdtype_code = malloc(cmdtabsize * sizeof(CMDCODETAB *));
for(i = 0; i < cmdcodesize; i++) {
- np = malloc(sizeof(CMDCODETAB));
- if(np == NULL) {
+ if((np = malloc(sizeof(CMDCODETAB))) == NULL) {
setcerr(122, NULL); /* cannot create hash table */
return false;
}
/* ハッシュ値の生成 */
- hashval = hash_cmdtype((&cmdcodearray[i])->cmd, (&cmdcodearray[i])->type);
+ hashval = hash_cmdtype(cmdcodearray[i].cmd, cmdcodearray[i].type);
/* ハッシュ表に値を追加 */
np->next = cmdtype_code[hashval];
cmdtype_code[hashval] = np;
{
int i;
CMDCODETAB *np, *nq;
- for(i = 0; i < cmdcodesize; i++){
+ for(i = 0; i < cmdtabsize; i++){
np = cmdtype_code[i];
while(np != NULL) {
nq = np->next;
keys[0]->type = INT;
keys[0]->val.i = (int)(code >> 8);
/* ハッシュ値を返す */
- return hash(1, keys, cmdcodesize);
+ return hash(1, keys, cmdtabsize);
}
/* 命令コードがキーのハッシュ表を作成する */
unsigned hashval;
int i;
- hashtabsize = cmdcodesize;
- code_type = malloc(cmdcodesize * sizeof(CMDCODETAB *));
+ cmdtabsize = hashtabsize(cmdcodesize);
+ code_type = malloc(cmdtabsize * sizeof(CMDCODETAB *));
for(i = 0; i < cmdcodesize; i++) {
if((np = malloc(sizeof(CMDCODETAB))) == NULL) {
setcerr(122, NULL); /* cannot create hash table */
{
int i;
CMDCODETAB *np, *nq;
- for(i = 0; i < cmdcodesize; i++){
+ for(i = 0; i < cmdtabsize; i++){
np = code_type[i];
while(np != NULL) {
nq = np->next;