<value>\t\t[a-zA-Z0-9.-/]* | 'string without single quotes'<value> | \"c-like string\"<value>\n\
\n\
Types:\n\
-:\t\tString\n\
+<empty>\t\tString\n\
#\t\t32-bit integer\n\
##\t\t64-bit integer\n\
$\t\tFloating point number\n\
}
item->cf.cls = CC_STATIC;
item->cf.number = 1;
- switch (*pos++)
+ switch (*pos)
{
case '#':
- if (*pos == '#')
+ if (*++pos == '#')
{
pos++;
item->cf.type = CT_U64;
item->cf.type = CT_INT;
break;
case '$':
+ pos++;
item->cf.type = CT_DOUBLE;
break;
- case ':':
+ default:
+ if (!Cword(*pos))
+ die("Invalid type syntax");
item->cf.type = CT_STRING;
break;
- default:
- die("Invalid type syntax");
}
parse_white();
item->cf.name = parse_name();
}
if (section->item.cf.cls == CC_LIST)
{
- item->cf.ptr = (void *)section->size;
+ item->cf.ptr = (void *)(uintptr_t)section->size;
section->size += sizeof(union value);
}
else
sprintf(buf, "%d", *(int *)v);
break;
case CT_U64:
- sprintf(buf, "%Lu", *(u64 *)v);
+ sprintf(buf, "%llu", (long long) *(u64 *)v);
break;
case CT_DOUBLE:
sprintf(buf, "%g", *(double *)v);
{
if (item->flags & FLAG_HIDE)
return;
- byte *val = (byte *)((addr_int_t)ptr + (addr_int_t)item->cf.ptr);
+ byte *val = (byte *)((uintptr_t)ptr + (uintptr_t)item->cf.ptr);
if (item->cf.cls == CC_LIST)
{
uns len = strlen(item->cf.name);