diff options
Diffstat (limited to 'src/marshal.cpp')
-rw-r--r-- | src/marshal.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/marshal.cpp b/src/marshal.cpp index da71843..a6b3e75 100644 --- a/src/marshal.cpp +++ b/src/marshal.cpp @@ -33,6 +33,12 @@ void marshalUInt(StorageIntf *s,uint v) s->write((const char *)b,4); } +void marshalUInt64(StorageIntf *s,uint64 v) +{ + marshalUInt(s, uint(v>>32)); + marshalUInt(s, uint(v&0xFFFFFFFF)); +} + void marshalBool(StorageIntf *s,bool b) { char c = b; @@ -345,7 +351,7 @@ void marshalEntry(StorageIntf *s,Entry *e) marshalInt(s,e->section); marshalInt(s,(int)e->protection); marshalInt(s,(int)e->mtype); - marshalInt(s,e->spec); + marshalUInt64(s,e->spec); marshalInt(s,e->initLines); marshalBool(s,e->stat); marshalBool(s,e->explicitExternal); @@ -426,6 +432,13 @@ uint unmarshalUInt(StorageIntf *s) return result; } +uint64 unmarshalUInt64(StorageIntf *s) +{ + uint64 result=uint64(unmarshalUInt(s))<<32; + result|=unmarshalUInt(s); + return result; +} + bool unmarshalBool(StorageIntf *s) { char result; @@ -719,7 +732,7 @@ Entry * unmarshalEntry(StorageIntf *s) e->section = unmarshalInt(s); e->protection = (Protection)unmarshalInt(s); e->mtype = (MethodTypes)unmarshalInt(s); - e->spec = unmarshalInt(s); + e->spec = unmarshalUInt64(s); e->initLines = unmarshalInt(s); e->stat = unmarshalBool(s); e->explicitExternal = unmarshalBool(s); |