summaryrefslogtreecommitdiffstats
path: root/src/marshal.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/marshal.cpp')
-rw-r--r--src/marshal.cpp17
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);