Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
45989a1f
Commit
45989a1f
authored
Jun 30, 2008
by
Rob Shearman
Committed by
Alexandre Julliard
Jul 01, 2008
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
oleaut32: Implement the 0x08 flag in SLTG_DoVars.
It means that the data is stored directly in pItem->byte_offs instead of the byte offset pointed to by it.
parent
d76de4ee
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
11 additions
and
4 deletions
+11
-4
typelib.c
dlls/oleaut32/typelib.c
+10
-3
typelib.h
dlls/oleaut32/typelib.h
+1
-1
No files found.
dlls/oleaut32/typelib.c
View file @
45989a1f
...
@@ -3099,7 +3099,6 @@ static void SLTG_DoVars(char *pBlk, char *pFirstItem, ITypeInfoImpl *pTI, unsign
...
@@ -3099,7 +3099,6 @@ static void SLTG_DoVars(char *pBlk, char *pFirstItem, ITypeInfoImpl *pTI, unsign
SLTG_Variable
*
pItem
;
SLTG_Variable
*
pItem
;
unsigned
short
i
;
unsigned
short
i
;
WORD
*
pType
;
WORD
*
pType
;
char
buf
[
300
];
for
(
pItem
=
(
SLTG_Variable
*
)
pFirstItem
,
i
=
0
;
i
<
cVars
;
for
(
pItem
=
(
SLTG_Variable
*
)
pFirstItem
,
i
=
0
;
i
<
cVars
;
pItem
=
(
SLTG_Variable
*
)(
pBlk
+
pItem
->
next
),
i
++
)
{
pItem
=
(
SLTG_Variable
*
)(
pBlk
+
pItem
->
next
),
i
++
)
{
...
@@ -3119,6 +3118,7 @@ static void SLTG_DoVars(char *pBlk, char *pFirstItem, ITypeInfoImpl *pTI, unsign
...
@@ -3119,6 +3118,7 @@ static void SLTG_DoVars(char *pBlk, char *pFirstItem, ITypeInfoImpl *pTI, unsign
else
else
(
*
ppVarDesc
)
->
Name
=
TLB_MultiByteToBSTR
(
pItem
->
name
+
pNameTable
);
(
*
ppVarDesc
)
->
Name
=
TLB_MultiByteToBSTR
(
pItem
->
name
+
pNameTable
);
TRACE_
(
typelib
)(
"name: %s
\n
"
,
debugstr_w
((
*
ppVarDesc
)
->
Name
));
TRACE_
(
typelib
)(
"byte_offs = 0x%x
\n
"
,
pItem
->
byte_offs
);
TRACE_
(
typelib
)(
"byte_offs = 0x%x
\n
"
,
pItem
->
byte_offs
);
TRACE_
(
typelib
)(
"memid = 0x%x
\n
"
,
pItem
->
memid
);
TRACE_
(
typelib
)(
"memid = 0x%x
\n
"
,
pItem
->
memid
);
...
@@ -3132,6 +3132,9 @@ static void SLTG_DoVars(char *pBlk, char *pFirstItem, ITypeInfoImpl *pTI, unsign
...
@@ -3132,6 +3132,9 @@ static void SLTG_DoVars(char *pBlk, char *pFirstItem, ITypeInfoImpl *pTI, unsign
(
*
ppVarDesc
)
->
vardesc
.
u
.
lpvarValue
=
HeapAlloc
(
GetProcessHeap
(),
0
,
(
*
ppVarDesc
)
->
vardesc
.
u
.
lpvarValue
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
VARIANT
));
sizeof
(
VARIANT
));
V_VT
((
*
ppVarDesc
)
->
vardesc
.
u
.
lpvarValue
)
=
VT_INT
;
V_VT
((
*
ppVarDesc
)
->
vardesc
.
u
.
lpvarValue
)
=
VT_INT
;
if
(
pItem
->
flags
&
0x08
)
V_UNION
((
*
ppVarDesc
)
->
vardesc
.
u
.
lpvarValue
,
intVal
)
=
pItem
->
byte_offs
;
else
V_UNION
((
*
ppVarDesc
)
->
vardesc
.
u
.
lpvarValue
,
intVal
)
=
V_UNION
((
*
ppVarDesc
)
->
vardesc
.
u
.
lpvarValue
,
intVal
)
=
*
(
INT
*
)(
pBlk
+
pItem
->
byte_offs
);
*
(
INT
*
)(
pBlk
+
pItem
->
byte_offs
);
}
}
...
@@ -3152,13 +3155,17 @@ static void SLTG_DoVars(char *pBlk, char *pFirstItem, ITypeInfoImpl *pTI, unsign
...
@@ -3152,13 +3155,17 @@ static void SLTG_DoVars(char *pBlk, char *pFirstItem, ITypeInfoImpl *pTI, unsign
else
else
pType
=
(
WORD
*
)(
pBlk
+
pItem
->
type
);
pType
=
(
WORD
*
)(
pBlk
+
pItem
->
type
);
if
(
pItem
->
flags
&
~
0xd
2
)
if
(
pItem
->
flags
&
~
0xd
a
)
FIXME_
(
typelib
)(
"unhandled flags = %02x
\n
"
,
pItem
->
flags
&
~
0xd
2
);
FIXME_
(
typelib
)(
"unhandled flags = %02x
\n
"
,
pItem
->
flags
&
~
0xd
a
);
SLTG_DoElem
(
pType
,
pBlk
,
SLTG_DoElem
(
pType
,
pBlk
,
&
(
*
ppVarDesc
)
->
vardesc
.
elemdescVar
,
ref_lookup
);
&
(
*
ppVarDesc
)
->
vardesc
.
elemdescVar
,
ref_lookup
);
if
(
TRACE_ON
(
typelib
))
{
char
buf
[
300
];
dump_TypeDesc
(
&
(
*
ppVarDesc
)
->
vardesc
.
elemdescVar
.
tdesc
,
buf
);
dump_TypeDesc
(
&
(
*
ppVarDesc
)
->
vardesc
.
elemdescVar
.
tdesc
,
buf
);
TRACE_
(
typelib
)(
"elemdescVar: %s
\n
"
,
buf
);
}
bstrPrevName
=
(
*
ppVarDesc
)
->
Name
;
bstrPrevName
=
(
*
ppVarDesc
)
->
Name
;
ppVarDesc
=
&
((
*
ppVarDesc
)
->
next
);
ppVarDesc
=
&
((
*
ppVarDesc
)
->
next
);
...
...
dlls/oleaut32/typelib.h
View file @
45989a1f
...
@@ -576,7 +576,7 @@ typedef struct {
...
@@ -576,7 +576,7 @@ typedef struct {
BYTE
flags
;
BYTE
flags
;
WORD
next
;
WORD
next
;
WORD
name
;
WORD
name
;
WORD
byte_offs
;
/* pos in struct, or offset to const type */
WORD
byte_offs
;
/* pos in struct, or offset to const type
or const data (if flags & 0x08)
*/
WORD
type
;
/* if flags & 0x02 this is the type, else offset to type */
WORD
type
;
/* if flags & 0x02 this is the type, else offset to type */
DWORD
memid
;
DWORD
memid
;
WORD
helpcontext
;
/* ?? */
WORD
helpcontext
;
/* ?? */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment