summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRainer Schuetze <r.sagitario@gmx.de>2019-07-18 18:56:38 (GMT)
committerRainer Schuetze <r.sagitario@gmx.de>2019-07-18 18:56:38 (GMT)
commit3239e14109ac416358e1962932fdd360e724beea (patch)
tree3358f665963297163fb5b67a29a5c230d95bd26b /src
parent3ed8409f81401c6c167ae15c32b11df5470611b6 (diff)
downloadcv2pdb-3239e14109ac416358e1962932fdd360e724beea.zip
cv2pdb-3239e14109ac416358e1962932fdd360e724beea.tar.gz
cv2pdb-3239e14109ac416358e1962932fdd360e724beea.tar.bz2
DWARF: fix writing info for aggregates larger than 32kB
Diffstat (limited to 'src')
-rw-r--r--src/cv2pdb.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/cv2pdb.cpp b/src/cv2pdb.cpp
index 86a8dca..9ac39f5 100644
--- a/src/cv2pdb.cpp
+++ b/src/cv2pdb.cpp
@@ -743,8 +743,8 @@ int CV2PDB::addAggregate(codeview_type* dtype, bool clss, int n_element, int fie
dtype->struct_v2.property = property | (uniquename ? kPropUniquename : 0);
dtype->struct_v2.derived = derived;
dtype->struct_v2.vshape = vshape;
- dtype->struct_v2.structlen = structlen;
- int len = cstrcpy_v(v3, (BYTE*)(&dtype->struct_v2 + 1), name);
+ int len = write_numeric_leaf(structlen, &(dtype->struct_v2.structlen)) - 2;
+ len += cstrcpy_v(v3, (BYTE*)(&dtype->struct_v2 + 1) + len, name);
if(uniquename)
len += cstrcpy_v(v3, (BYTE*)(&dtype->struct_v2 + 1) + len, uniquename);
len += sizeof (dtype->struct_v2);
@@ -803,9 +803,9 @@ int CV2PDB::addFieldMember(codeview_fieldtype* dfieldtype, int attr, int offset,
{
dfieldtype->member_v2.id = v3 ? LF_MEMBER_V3 : LF_MEMBER_V2;
dfieldtype->member_v2.attribute = attr;
- dfieldtype->member_v2.offset = offset;
dfieldtype->member_v2.type = translateType(type);
- int len = cstrcpy_v(v3, (BYTE*)(&dfieldtype->member_v2 + 1), name);
+ int len = write_numeric_leaf(offset, &(dfieldtype->member_v2.offset)) - 2;
+ len += cstrcpy_v(v3, (BYTE*)(&dfieldtype->member_v2 + 1) + len, name);
len += sizeof (dfieldtype->member_v2);
unsigned char* p = (unsigned char*) dfieldtype;