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
8dc28d53
Commit
8dc28d53
authored
Sep 20, 2005
by
Mike McCormack
Committed by
Alexandre Julliard
Sep 20, 2005
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added memory allocation inline functions (part 1).
parent
8defc289
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
145 additions
and
123 deletions
+145
-123
create.c
dlls/msi/create.c
+2
-2
delete.c
dlls/msi/delete.c
+2
-2
distinct.c
dlls/msi/distinct.c
+7
-7
events.c
dlls/msi/events.c
+9
-9
handle.c
dlls/msi/handle.c
+2
-2
insert.c
dlls/msi/insert.c
+2
-2
msipriv.h
dlls/msi/msipriv.h
+43
-15
order.c
dlls/msi/order.c
+5
-6
package.c
dlls/msi/package.c
+14
-14
preview.c
dlls/msi/preview.c
+1
-1
record.c
dlls/msi/record.c
+2
-2
registry.c
dlls/msi/registry.c
+13
-15
select.c
dlls/msi/select.c
+2
-3
source.c
dlls/msi/source.c
+10
-10
sql.y
dlls/msi/sql.y
+1
-1
string.c
dlls/msi/string.c
+11
-13
suminfo.c
dlls/msi/suminfo.c
+9
-9
update.c
dlls/msi/update.c
+2
-2
upgrade.c
dlls/msi/upgrade.c
+3
-3
where.c
dlls/msi/where.c
+5
-5
No files found.
dlls/msi/create.c
View file @
8dc28d53
...
...
@@ -199,7 +199,7 @@ static UINT CREATE_delete( struct tagMSIVIEW *view )
TRACE
(
"%p
\n
"
,
cv
);
msiobj_release
(
&
cv
->
db
->
hdr
);
HeapFree
(
GetProcessHeap
(),
0
,
cv
);
msi_free
(
cv
);
return
ERROR_SUCCESS
;
}
...
...
@@ -226,7 +226,7 @@ UINT CREATE_CreateView( MSIDATABASE *db, MSIVIEW **view, LPWSTR table,
TRACE
(
"%p
\n
"
,
cv
);
cv
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
*
cv
);
cv
=
msi_alloc_zero
(
sizeof
*
cv
);
if
(
!
cv
)
return
ERROR_FUNCTION_FAILED
;
...
...
dlls/msi/delete.c
View file @
8dc28d53
...
...
@@ -177,7 +177,7 @@ static UINT DELETE_delete( struct tagMSIVIEW *view )
if
(
dv
->
table
)
dv
->
table
->
ops
->
delete
(
dv
->
table
);
HeapFree
(
GetProcessHeap
(),
0
,
dv
);
msi_free
(
dv
);
return
ERROR_SUCCESS
;
}
...
...
@@ -203,7 +203,7 @@ UINT DELETE_CreateView( MSIDATABASE *db, MSIVIEW **view, MSIVIEW *table )
TRACE
(
"%p
\n
"
,
dv
);
dv
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
*
dv
);
dv
=
msi_alloc_zero
(
sizeof
*
dv
);
if
(
!
dv
)
return
ERROR_FUNCTION_FAILED
;
...
...
dlls/msi/distinct.c
View file @
8dc28d53
...
...
@@ -67,7 +67,7 @@ static DISTINCTSET ** distinct_insert( DISTINCTSET **x, UINT val, UINT row )
}
/* nothing found, so add one */
*
x
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
DISTINCTSET
)
);
*
x
=
msi_alloc
(
sizeof
(
DISTINCTSET
)
);
if
(
*
x
)
{
(
*
x
)
->
val
=
val
;
...
...
@@ -85,7 +85,7 @@ static void distinct_free( DISTINCTSET *x )
{
DISTINCTSET
*
next
=
x
->
nextrow
;
distinct_free
(
x
->
nextcol
);
HeapFree
(
GetProcessHeap
(),
0
,
x
);
msi_free
(
x
);
x
=
next
;
}
}
...
...
@@ -126,7 +126,7 @@ static UINT DISTINCT_execute( struct tagMSIVIEW *view, MSIRECORD *record )
if
(
r
!=
ERROR_SUCCESS
)
return
r
;
dv
->
translation
=
HeapAlloc
(
GetProcessHeap
(),
0
,
r_count
*
sizeof
(
UINT
)
);
dv
->
translation
=
msi_alloc
(
r_count
*
sizeof
(
UINT
)
);
if
(
!
dv
->
translation
)
return
ERROR_FUNCTION_FAILED
;
...
...
@@ -178,7 +178,7 @@ static UINT DISTINCT_close( struct tagMSIVIEW *view )
if
(
!
dv
->
table
)
return
ERROR_FUNCTION_FAILED
;
HeapFree
(
GetProcessHeap
(),
0
,
dv
->
translation
);
msi_free
(
dv
->
translation
);
dv
->
translation
=
NULL
;
dv
->
row_count
=
0
;
...
...
@@ -239,9 +239,9 @@ static UINT DISTINCT_delete( struct tagMSIVIEW *view )
if
(
dv
->
table
)
dv
->
table
->
ops
->
delete
(
dv
->
table
);
HeapFree
(
GetProcessHeap
(),
0
,
dv
->
translation
);
msi_free
(
dv
->
translation
);
msiobj_release
(
&
dv
->
db
->
hdr
);
HeapFree
(
GetProcessHeap
(),
0
,
dv
);
msi_free
(
dv
);
return
ERROR_SUCCESS
;
}
...
...
@@ -275,7 +275,7 @@ UINT DISTINCT_CreateView( MSIDATABASE *db, MSIVIEW **view, MSIVIEW *table )
return
r
;
}
dv
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
*
dv
);
dv
=
msi_alloc_zero
(
sizeof
*
dv
);
if
(
!
dv
)
return
ERROR_FUNCTION_FAILED
;
...
...
dlls/msi/events.c
View file @
8dc28d53
...
...
@@ -239,7 +239,7 @@ static UINT ControlEvent_SetTargetPath(MSIPACKAGE* package, LPCWSTR argument,
UINT
r
;
/* failure to set the path halts the executing of control events */
r
=
MSI_SetTargetPathW
(
package
,
argument
,
path
);
HeapFree
(
GetProcessHeap
(),
0
,
path
);
msi_free
(
path
);
return
r
;
}
...
...
@@ -248,10 +248,10 @@ static UINT ControlEvent_SetTargetPath(MSIPACKAGE* package, LPCWSTR argument,
*/
static
void
free_subscriber
(
struct
subscriber
*
sub
)
{
HeapFree
(
GetProcessHeap
(),
0
,
sub
->
event
);
HeapFree
(
GetProcessHeap
(),
0
,
sub
->
control
);
HeapFree
(
GetProcessHeap
(),
0
,
sub
->
attribute
);
HeapFree
(
GetProcessHeap
(),
0
,
sub
);
msi_free
(
sub
->
event
);
msi_free
(
sub
->
control
);
msi_free
(
sub
->
attribute
);
msi_free
(
sub
);
}
VOID
ControlEvent_SubscribeToEvent
(
MSIPACKAGE
*
package
,
LPCWSTR
event
,
...
...
@@ -259,7 +259,7 @@ VOID ControlEvent_SubscribeToEvent( MSIPACKAGE *package, LPCWSTR event,
{
struct
subscriber
*
sub
;
sub
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
*
sub
));
sub
=
msi_alloc
(
sizeof
(
*
sub
));
if
(
!
sub
)
return
;
sub
->
event
=
strdupW
(
event
);
...
...
@@ -352,7 +352,7 @@ UINT ACTION_DialogBox( MSIPACKAGE* package, LPCWSTR szDialogName )
package
->
next_dialog
=
NULL
;
r
=
event_do_dialog
(
package
,
name
,
TRUE
);
HeapFree
(
GetProcessHeap
(),
0
,
name
);
msi_free
(
name
);
}
if
(
r
==
ERROR_IO_PENDING
)
...
...
@@ -389,11 +389,11 @@ UINT ControlEvent_HandleControlEvent(MSIPACKAGE *package, LPCWSTR event,
LPWSTR
wevent
=
strdupAtoW
(
Events
[
i
].
event
);
if
(
lstrcmpW
(
wevent
,
event
)
==
0
)
{
HeapFree
(
GetProcessHeap
(),
0
,
wevent
);
msi_free
(
wevent
);
rc
=
Events
[
i
].
handler
(
package
,
argument
,
dialog
);
return
rc
;
}
HeapFree
(
GetProcessHeap
(),
0
,
wevent
);
msi_free
(
wevent
);
i
++
;
}
FIXME
(
"unhandled control event %s arg(%s)
\n
"
,
...
...
dlls/msi/handle.c
View file @
8dc28d53
...
...
@@ -132,7 +132,7 @@ void *alloc_msiobject(UINT type, UINT size, msihandledestructor destroy )
{
MSIOBJECTHDR
*
info
;
info
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
size
);
info
=
msi_alloc_zero
(
size
);
if
(
info
)
{
info
->
magic
=
MSIHANDLE_MAGIC
;
...
...
@@ -190,7 +190,7 @@ int msiobj_release( MSIOBJECTHDR *info )
{
if
(
info
->
destructor
)
info
->
destructor
(
info
);
HeapFree
(
GetProcessHeap
(),
0
,
info
);
msi_free
(
info
);
TRACE
(
"object %p destroyed
\n
"
,
info
);
}
...
...
dlls/msi/insert.c
View file @
8dc28d53
...
...
@@ -209,7 +209,7 @@ static UINT INSERT_delete( struct tagMSIVIEW *view )
if
(
sv
)
sv
->
ops
->
delete
(
sv
);
msiobj_release
(
&
iv
->
db
->
hdr
);
HeapFree
(
GetProcessHeap
(),
0
,
iv
);
msi_free
(
iv
);
return
ERROR_SUCCESS
;
}
...
...
@@ -250,7 +250,7 @@ UINT INSERT_CreateView( MSIDATABASE *db, MSIVIEW **view, LPWSTR table,
return
r
;
}
iv
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
*
iv
);
iv
=
msi_alloc_zero
(
sizeof
*
iv
);
if
(
!
iv
)
return
ERROR_FUNCTION_FAILED
;
...
...
dlls/msi/msipriv.h
View file @
8dc28d53
...
...
@@ -422,28 +422,55 @@ extern DWORD gUIFilter;
extern
LPVOID
gUIContext
;
extern
WCHAR
gszLogFile
[
MAX_PATH
];
/* memory allocation macro functions */
static
inline
void
*
msi_alloc
(
size_t
len
)
{
return
HeapAlloc
(
GetProcessHeap
(),
0
,
len
);
}
static
inline
void
*
msi_alloc_zero
(
size_t
len
)
{
return
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
len
);
}
static
inline
void
*
msi_realloc
(
void
*
mem
,
size_t
len
)
{
return
HeapReAlloc
(
GetProcessHeap
(),
0
,
mem
,
len
);
}
static
inline
void
*
msi_realloc_zero
(
void
*
mem
,
size_t
len
)
{
return
HeapReAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
mem
,
len
);
}
static
inline
BOOL
msi_free
(
void
*
mem
)
{
return
HeapFree
(
GetProcessHeap
(),
0
,
mem
);
}
inline
static
char
*
strdupWtoA
(
LPCWSTR
str
)
{
LPSTR
ret
=
NULL
;
if
(
str
)
{
DWORD
len
=
WideCharToMultiByte
(
CP_ACP
,
0
,
str
,
-
1
,
NULL
,
0
,
NULL
,
NULL
);
if
((
ret
=
HeapAlloc
(
GetProcessHeap
(),
0
,
len
)))
WideCharToMultiByte
(
CP_ACP
,
0
,
str
,
-
1
,
ret
,
len
,
NULL
,
NULL
);
}
DWORD
len
;
if
(
!
str
)
return
ret
;
len
=
WideCharToMultiByte
(
CP_ACP
,
0
,
str
,
-
1
,
NULL
,
0
,
NULL
,
NULL
);
ret
=
msi_alloc
(
len
);
if
(
ret
)
WideCharToMultiByte
(
CP_ACP
,
0
,
str
,
-
1
,
ret
,
len
,
NULL
,
NULL
);
return
ret
;
}
inline
static
LPWSTR
strdupAtoW
(
LPCSTR
str
)
{
LPWSTR
ret
=
NULL
;
if
(
str
)
{
DWORD
len
=
MultiByteToWideChar
(
CP_ACP
,
0
,
str
,
-
1
,
NULL
,
0
);
if
((
ret
=
HeapAlloc
(
GetProcessHeap
(),
0
,
len
*
sizeof
(
WCHAR
)
)))
MultiByteToWideChar
(
CP_ACP
,
0
,
str
,
-
1
,
ret
,
len
);
}
DWORD
len
;
if
(
!
str
)
return
ret
;
len
=
MultiByteToWideChar
(
CP_ACP
,
0
,
str
,
-
1
,
NULL
,
0
);
ret
=
msi_alloc
(
len
*
sizeof
(
WCHAR
)
);
if
(
ret
)
MultiByteToWideChar
(
CP_ACP
,
0
,
str
,
-
1
,
ret
,
len
);
return
ret
;
}
...
...
@@ -451,8 +478,9 @@ inline static LPWSTR strdupW( LPCWSTR src )
{
LPWSTR
dest
;
if
(
!
src
)
return
NULL
;
dest
=
HeapAlloc
(
GetProcessHeap
(),
0
,
(
lstrlenW
(
src
)
+
1
)
*
sizeof
(
WCHAR
));
lstrcpyW
(
dest
,
src
);
dest
=
msi_alloc
(
(
lstrlenW
(
src
)
+
1
)
*
sizeof
(
WCHAR
)
);
if
(
dest
)
lstrcpyW
(
dest
,
src
);
return
dest
;
}
...
...
dlls/msi/order.c
View file @
8dc28d53
...
...
@@ -160,7 +160,7 @@ static UINT ORDER_execute( struct tagMSIVIEW *view, MSIRECORD *record )
if
(
r
!=
ERROR_SUCCESS
)
return
r
;
ov
->
reorder
=
HeapAlloc
(
GetProcessHeap
(),
0
,
num_rows
*
sizeof
(
UINT
)
);
ov
->
reorder
=
msi_alloc
(
num_rows
*
sizeof
(
UINT
)
);
if
(
!
ov
->
reorder
)
return
ERROR_FUNCTION_FAILED
;
...
...
@@ -187,7 +187,7 @@ static UINT ORDER_close( struct tagMSIVIEW *view )
if
(
!
ov
->
table
)
return
ERROR_FUNCTION_FAILED
;
HeapFree
(
GetProcessHeap
(),
0
,
ov
->
reorder
);
msi_free
(
ov
->
reorder
);
ov
->
reorder
=
NULL
;
return
ov
->
table
->
ops
->
close
(
ov
->
table
);
...
...
@@ -240,11 +240,11 @@ static UINT ORDER_delete( struct tagMSIVIEW *view )
if
(
ov
->
table
)
ov
->
table
->
ops
->
delete
(
ov
->
table
);
HeapFree
(
GetProcessHeap
(),
0
,
ov
->
reorder
);
msi_free
(
ov
->
reorder
);
ov
->
reorder
=
NULL
;
msiobj_release
(
&
ov
->
db
->
hdr
);
HeapFree
(
GetProcessHeap
(),
0
,
ov
);
msi_free
(
ov
);
return
ERROR_SUCCESS
;
}
...
...
@@ -317,8 +317,7 @@ UINT ORDER_CreateView( MSIDATABASE *db, MSIVIEW **view, MSIVIEW *table,
return
r
;
}
ov
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
*
ov
+
sizeof
(
UINT
)
*
count
);
ov
=
msi_alloc_zero
(
sizeof
*
ov
+
sizeof
(
UINT
)
*
count
);
if
(
!
ov
)
return
ERROR_FUNCTION_FAILED
;
...
...
dlls/msi/package.c
View file @
8dc28d53
...
...
@@ -454,7 +454,7 @@ UINT MSI_OpenPackageW(LPCWSTR szPackage, MSIPACKAGE **pPackage)
size
=
0
;
MSI_GetPropertyW
(
package
,
szProductCode
,
NULL
,
&
size
);
size
++
;
package
->
ProductCode
=
HeapAlloc
(
GetProcessHeap
(),
0
,
size
*
sizeof
(
WCHAR
));
package
->
ProductCode
=
msi_alloc
(
size
*
sizeof
(
WCHAR
));
MSI_GetPropertyW
(
package
,
szProductCode
,
package
->
ProductCode
,
&
size
);
*
pPackage
=
package
;
...
...
@@ -522,7 +522,7 @@ UINT WINAPI MsiOpenPackageExA(LPCSTR szPackage, DWORD dwOptions, MSIHANDLE *phPa
ret
=
MsiOpenPackageExW
(
szwPack
,
dwOptions
,
phPackage
);
HeapFree
(
GetProcessHeap
(),
0
,
szwPack
);
msi_free
(
szwPack
);
return
ret
;
}
...
...
@@ -583,7 +583,7 @@ INT MSI_ProcessMessage( MSIPACKAGE *package, INSTALLMESSAGE eMessageType,
if
((
eMessageType
&
0xff000000
)
==
INSTALLMESSAGE_PROGRESS
)
log_type
|=
0x800
;
message
=
HeapAlloc
(
GetProcessHeap
(),
0
,
1
*
sizeof
(
WCHAR
));
message
=
msi_alloc
(
1
*
sizeof
(
WCHAR
));
message
[
0
]
=
0
;
msg_field
=
MSI_RecordGetFieldCount
(
record
);
for
(
i
=
1
;
i
<=
msg_field
;
i
++
)
...
...
@@ -596,8 +596,8 @@ INT MSI_ProcessMessage( MSIPACKAGE *package, INSTALLMESSAGE eMessageType,
MSI_RecordGetStringW
(
record
,
i
,
NULL
,
&
sz
);
sz
+=
4
;
total_size
+=
sz
*
sizeof
(
WCHAR
);
tmp
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sz
*
sizeof
(
WCHAR
));
message
=
HeapReAlloc
(
GetProcessHeap
(),
0
,
message
,
total_size
*
sizeof
(
WCHAR
));
tmp
=
msi_alloc
(
sz
*
sizeof
(
WCHAR
));
message
=
msi_realloc
(
message
,
total_size
*
sizeof
(
WCHAR
));
MSI_RecordGetStringW
(
record
,
i
,
tmp
,
&
sz
);
...
...
@@ -610,7 +610,7 @@ INT MSI_ProcessMessage( MSIPACKAGE *package, INSTALLMESSAGE eMessageType,
if
(
msg_field
>
1
)
strcatW
(
message
,
space
);
HeapFree
(
GetProcessHeap
(),
0
,
tmp
);
msi_free
(
tmp
);
}
TRACE
(
"(%p %lx %lx %s)
\n
"
,
gUIHandlerA
,
gUIFilter
,
log_type
,
...
...
@@ -619,7 +619,7 @@ INT MSI_ProcessMessage( MSIPACKAGE *package, INSTALLMESSAGE eMessageType,
/* convert it to ASCII */
len
=
WideCharToMultiByte
(
CP_ACP
,
0
,
message
,
-
1
,
NULL
,
0
,
NULL
,
NULL
);
msg
=
HeapAlloc
(
GetProcessHeap
(),
0
,
len
);
msg
=
msi_alloc
(
len
);
WideCharToMultiByte
(
CP_ACP
,
0
,
message
,
-
1
,
msg
,
len
,
NULL
,
NULL
);
...
...
@@ -643,9 +643,9 @@ INT MSI_ProcessMessage( MSIPACKAGE *package, INSTALLMESSAGE eMessageType,
CloseHandle
(
log_file
);
}
}
HeapFree
(
GetProcessHeap
(),
0
,
msg
);
msi_free
(
msg
);
HeapFree
(
GetProcessHeap
(),
0
,
message
);
msi_free
(
message
);
return
ERROR_SUCCESS
;
}
...
...
@@ -697,8 +697,8 @@ UINT WINAPI MsiSetPropertyA( MSIHANDLE hInstall, LPCSTR szName, LPCSTR szValue)
hr
=
MsiSetPropertyW
(
hInstall
,
szwName
,
szwValue
);
end:
HeapFree
(
GetProcessHeap
(),
0
,
szwName
);
HeapFree
(
GetProcessHeap
(),
0
,
szwValue
);
msi_free
(
szwName
);
msi_free
(
szwValue
);
return
hr
;
}
...
...
@@ -792,11 +792,11 @@ static UINT MSI_GetPropertyRow(MSIPACKAGE *package, LPCWSTR szName, MSIRECORD **
return
ERROR_INVALID_PARAMETER
;
sz
=
sizeof
select
+
strlenW
(
szName
)
*
sizeof
(
WCHAR
);
query
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sz
);
query
=
msi_alloc
(
sz
);
sprintfW
(
query
,
select
,
szName
);
rc
=
MSI_DatabaseOpenViewW
(
package
->
db
,
query
,
&
view
);
HeapFree
(
GetProcessHeap
(),
0
,
query
);
msi_free
(
query
);
if
(
rc
==
ERROR_SUCCESS
)
{
rc
=
MSI_ViewExecute
(
view
,
0
);
...
...
@@ -877,7 +877,7 @@ UINT MSI_GetPropertyA(MSIPACKAGE *package, LPCSTR szName,
*
pchValueBuf
=
0
;
TRACE
(
"property not found
\n
"
);
}
HeapFree
(
GetProcessHeap
(),
0
,
szwName
);
msi_free
(
szwName
);
return
rc
;
}
...
...
dlls/msi/preview.c
View file @
8dc28d53
...
...
@@ -145,7 +145,7 @@ UINT WINAPI MsiPreviewDialogA( MSIHANDLE hPreview, LPCSTR szDialogName )
return
ERROR_OUTOFMEMORY
;
}
r
=
MsiPreviewDialogW
(
hPreview
,
strW
);
HeapFree
(
GetProcessHeap
(),
0
,
strW
);
msi_free
(
strW
);
return
r
;
}
...
...
dlls/msi/record.c
View file @
8dc28d53
...
...
@@ -55,7 +55,7 @@ static void MSI_FreeField( MSIFIELD *field )
case
MSIFIELD_INT
:
break
;
case
MSIFIELD_WSTR
:
HeapFree
(
GetProcessHeap
(),
0
,
field
->
u
.
szwVal
);
msi_free
(
field
->
u
.
szwVal
);
break
;
case
MSIFIELD_STREAM
:
IStream_Release
(
field
->
u
.
stream
);
...
...
@@ -654,7 +654,7 @@ UINT WINAPI MsiRecordSetStreamA(MSIHANDLE hRecord, unsigned int iField, LPCSTR s
return
ERROR_OUTOFMEMORY
;
}
ret
=
MsiRecordSetStreamW
(
hRecord
,
iField
,
wstr
);
HeapFree
(
GetProcessHeap
(),
0
,
wstr
);
msi_free
(
wstr
);
return
ret
;
}
...
...
dlls/msi/registry.c
View file @
8dc28d53
...
...
@@ -581,7 +581,7 @@ UINT WINAPI MsiDecomposeDescriptorA( LPCSTR szDescriptor, LPSTR szProduct,
WideCharToMultiByte
(
CP_ACP
,
0
,
component
,
MAX_FEATURE_CHARS
+
1
,
szComponent
,
MAX_FEATURE_CHARS
+
1
,
NULL
,
NULL
);
HeapFree
(
GetProcessHeap
(),
0
,
str
);
msi_free
(
str
);
return
r
;
}
...
...
@@ -650,7 +650,7 @@ UINT WINAPI MsiEnumFeaturesA(LPCSTR szProduct, DWORD index,
szParent
,
GUID_SIZE
,
NULL
,
NULL
);
}
HeapFree
(
GetProcessHeap
(),
0
,
szwProduct
);
msi_free
(
szwProduct
);
return
r
;
}
...
...
@@ -730,7 +730,7 @@ UINT WINAPI MsiEnumClientsA(LPCSTR szComponent, DWORD index, LPSTR szProduct)
szProduct
,
GUID_SIZE
,
NULL
,
NULL
);
}
HeapFree
(
GetProcessHeap
(),
0
,
szwComponent
);
msi_free
(
szwComponent
);
return
r
;
}
...
...
@@ -780,8 +780,7 @@ UINT WINAPI MsiEnumComponentQualifiersA( LPSTR szComponent, DWORD iIndex,
szwComponent
=
strdupAtoW
(
szComponent
);
if
(
lpQualifierBuf
)
lpwQualifierBuf
=
HeapAlloc
(
GetProcessHeap
(),
0
,
(
*
pcchQualifierBuf
)
*
sizeof
(
WCHAR
));
lpwQualifierBuf
=
msi_alloc
(
(
*
pcchQualifierBuf
)
*
sizeof
(
WCHAR
));
else
lpwQualifierBuf
=
NULL
;
...
...
@@ -791,8 +790,7 @@ UINT WINAPI MsiEnumComponentQualifiersA( LPSTR szComponent, DWORD iIndex,
pcchwQualifierBuf
=
0
;
if
(
lpApplicationDataBuf
)
lpwApplicationDataBuf
=
HeapAlloc
(
GetProcessHeap
(),
0
,
(
*
pcchApplicationDataBuf
)
*
sizeof
(
WCHAR
));
lpwApplicationDataBuf
=
msi_alloc
(
(
*
pcchApplicationDataBuf
)
*
sizeof
(
WCHAR
));
else
lpwApplicationDataBuf
=
NULL
;
...
...
@@ -831,9 +829,9 @@ UINT WINAPI MsiEnumComponentQualifiersA( LPSTR szComponent, DWORD iIndex,
*
pcchApplicationDataBuf
=
length
-
1
;
}
HeapFree
(
GetProcessHeap
(),
0
,
lpwApplicationDataBuf
);
HeapFree
(
GetProcessHeap
(),
0
,
lpwQualifierBuf
);
HeapFree
(
GetProcessHeap
(),
0
,
szwComponent
);
msi_free
(
lpwApplicationDataBuf
);
msi_free
(
lpwQualifierBuf
);
msi_free
(
szwComponent
);
return
rc
;
}
...
...
@@ -868,16 +866,16 @@ UINT WINAPI MsiEnumComponentQualifiersW( LPWSTR szComponent, DWORD iIndex,
return
ERROR_UNKNOWN_COMPONENT
;
full_buffer_size
=
(
52
*
sizeof
(
WCHAR
))
+
actual_pcchApplicationDataBuf
;
full_buffer
=
HeapAlloc
(
GetProcessHeap
(),
0
,
full_buffer_size
);
full_buffer
=
msi_alloc
(
full_buffer_size
);
rc
=
RegEnumValueW
(
key
,
iIndex
,
lpQualifierBuf
,
pcchQualifierBuf
,
NULL
,
NULL
,
(
LPBYTE
)
full_buffer
,
&
full_buffer_size
);
if
(
rc
==
ERROR_MORE_DATA
)
{
HeapFree
(
GetProcessHeap
(),
0
,
full_buffer
);
msi_free
(
full_buffer
);
full_buffer_size
+=
sizeof
(
WCHAR
);
full_buffer
=
HeapAlloc
(
GetProcessHeap
(),
0
,
full_buffer_size
);
full_buffer
=
msi_alloc
(
full_buffer_size
);
rc
=
RegEnumValueW
(
key
,
iIndex
,
lpQualifierBuf
,
pcchQualifierBuf
,
NULL
,
NULL
,
(
LPBYTE
)
full_buffer
,
&
full_buffer_size
);
}
...
...
@@ -907,7 +905,7 @@ UINT WINAPI MsiEnumComponentQualifiersW( LPWSTR szComponent, DWORD iIndex,
debugstr_w
(
lpApplicationDataBuf
));
}
HeapFree
(
GetProcessHeap
(),
0
,
full_buffer
);
msi_free
(
full_buffer
);
return
rc
;
}
...
...
@@ -971,6 +969,6 @@ UINT WINAPI MsiEnumRelatedProductsA(LPCSTR szUpgradeCode, DWORD dwReserved,
WideCharToMultiByte
(
CP_ACP
,
0
,
productW
,
GUID_SIZE
,
lpProductBuf
,
GUID_SIZE
,
NULL
,
NULL
);
}
HeapFree
(
GetProcessHeap
(),
0
,
szwUpgradeCode
);
msi_free
(
szwUpgradeCode
);
return
r
;
}
dlls/msi/select.c
View file @
8dc28d53
...
...
@@ -190,7 +190,7 @@ static UINT SELECT_delete( struct tagMSIVIEW *view )
if
(
sv
->
table
)
sv
->
table
->
ops
->
delete
(
sv
->
table
);
HeapFree
(
GetProcessHeap
(),
0
,
sv
);
msi_free
(
sv
);
return
ERROR_SUCCESS
;
}
...
...
@@ -259,8 +259,7 @@ UINT SELECT_CreateView( MSIDATABASE *db, MSIVIEW **view, MSIVIEW *table,
return
r
;
}
sv
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
*
sv
+
count
*
sizeof
(
UINT
)
);
sv
=
msi_alloc_zero
(
sizeof
*
sv
+
count
*
sizeof
(
UINT
)
);
if
(
!
sv
)
return
ERROR_FUNCTION_FAILED
;
...
...
dlls/msi/source.c
View file @
8dc28d53
...
...
@@ -129,7 +129,7 @@ static UINT find_given_source(HKEY key, LPCWSTR szSource, media_info *ss)
rc
=
RegEnumValueW
(
key
,
index
,
szIndex
,
&
size
,
NULL
,
NULL
,
NULL
,
&
val_size
);
if
(
rc
!=
ERROR_NO_MORE_ITEMS
)
{
val
=
HeapAlloc
(
GetProcessHeap
(),
0
,
val_size
);
val
=
msi_alloc
(
val_size
);
RegEnumValueW
(
key
,
index
,
szIndex
,
&
size
,
NULL
,
NULL
,
(
LPBYTE
)
val
,
&
val_size
);
if
(
lstrcmpiW
(
szSource
,
val
)
==
0
)
...
...
@@ -141,7 +141,7 @@ static UINT find_given_source(HKEY key, LPCWSTR szSource, media_info *ss)
else
strcpyW
(
ss
->
szIndex
,
szIndex
);
HeapFree
(
GetProcessHeap
(),
0
,
val
);
msi_free
(
val
);
index
++
;
}
}
...
...
@@ -221,7 +221,7 @@ UINT WINAPI MsiSourceListGetInfoW( LPCWSTR szProduct, LPCWSTR szUserSid,
else
{
LPWSTR
ptr
;
buffer
=
HeapAlloc
(
GetProcessHeap
(),
0
,
size
);
buffer
=
msi_alloc
(
size
);
rc
=
RegQueryValueExW
(
sourcekey
,
INSTALLPROPERTY_LASTUSEDSOURCEW
,
0
,
0
,
(
LPBYTE
)
buffer
,
&
size
);
ptr
=
strchrW
(
buffer
,
';'
);
...
...
@@ -240,7 +240,7 @@ UINT WINAPI MsiSourceListGetInfoW( LPCWSTR szProduct, LPCWSTR szUserSid,
else
rc
=
ERROR_SUCCESS
;
}
HeapFree
(
GetProcessHeap
(),
0
,
buffer
);
msi_free
(
buffer
);
}
}
else
if
(
strcmpW
(
INSTALLPROPERTY_LASTUSEDTYPEW
,
szProperty
)
==
0
)
...
...
@@ -254,7 +254,7 @@ UINT WINAPI MsiSourceListGetInfoW( LPCWSTR szProduct, LPCWSTR szUserSid,
rc
=
ERROR_UNKNOWN_PROPERTY
;
else
{
buffer
=
HeapAlloc
(
GetProcessHeap
(),
0
,
size
);
buffer
=
msi_alloc
(
size
);
rc
=
RegQueryValueExW
(
sourcekey
,
INSTALLPROPERTY_LASTUSEDSOURCEW
,
0
,
0
,
(
LPBYTE
)
buffer
,
&
size
);
if
(
*
pcchValue
<
1
)
...
...
@@ -267,7 +267,7 @@ UINT WINAPI MsiSourceListGetInfoW( LPCWSTR szProduct, LPCWSTR szUserSid,
szValue
[
0
]
=
buffer
[
0
];
rc
=
ERROR_SUCCESS
;
}
HeapFree
(
GetProcessHeap
(),
0
,
buffer
);
msi_free
(
buffer
);
}
}
else
if
(
strcmpW
(
INSTALLPROPERTY_PACKAGENAMEW
,
szProperty
)
==
0
)
...
...
@@ -369,13 +369,13 @@ UINT WINAPI MsiSourceListSetInfoW( LPCWSTR szProduct, LPCWSTR szUserSid,
ERR
(
"Unknown source type! 0x%lx
\n
"
,
dwOptions
);
size
=
(
lstrlenW
(
szValue
)
+
5
)
*
sizeof
(
WCHAR
);
buffer
=
HeapAlloc
(
GetProcessHeap
(),
0
,
size
);
buffer
=
msi_alloc
(
size
);
sprintfW
(
buffer
,
LastUsedSource_Fmt
,
typechar
,
1
,
szValue
);
rc
=
RegSetValueExW
(
sourcekey
,
INSTALLPROPERTY_LASTUSEDSOURCEW
,
0
,
REG_EXPAND_SZ
,
(
LPBYTE
)
buffer
,
size
);
if
(
rc
!=
ERROR_SUCCESS
)
rc
=
ERROR_UNKNOWN_PROPERTY
;
HeapFree
(
GetProcessHeap
(),
0
,
buffer
);
msi_free
(
buffer
);
}
else
if
(
strcmpW
(
INSTALLPROPERTY_PACKAGENAMEW
,
szProperty
)
==
0
)
{
...
...
@@ -547,11 +547,11 @@ UINT WINAPI MsiSourceListAddMediaDiskW(LPCWSTR szProduct, LPCWSTR szUserSid,
size
*=
sizeof
(
WCHAR
);
buffer
=
HeapAlloc
(
GetProcessHeap
(),
0
,
size
);
buffer
=
msi_alloc
(
size
);
sprintfW
(
buffer
,
disk_fmt
,
pt1
,
pt2
);
RegSetValueExW
(
mediakey
,
szIndex
,
0
,
REG_SZ
,
(
LPBYTE
)
buffer
,
size
);
HeapFree
(
GetProcessHeap
(),
0
,
buffer
);
msi_free
(
buffer
);
RegCloseKey
(
sourcekey
);
RegCloseKey
(
mediakey
);
...
...
dlls/msi/sql.y
View file @
8dc28d53
...
...
@@ -608,7 +608,7 @@ static void *parser_alloc( void *info, unsigned int sz )
SQL_input* sql = (SQL_input*) info;
struct list *mem;
mem =
HeapAlloc( GetProcessHeap(), 0,
sizeof (struct list) + sz );
mem =
msi_alloc(
sizeof (struct list) + sz );
list_add_tail( sql->mem, mem );
return &mem[1];
}
...
...
dlls/msi/string.c
View file @
8dc28d53
...
...
@@ -72,14 +72,13 @@ string_table *msi_init_stringtable( int entries, UINT codepage )
{
string_table
*
st
;
st
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
string_table
)
);
st
=
msi_alloc
(
sizeof
(
string_table
)
);
if
(
!
st
)
return
NULL
;
st
->
strings
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
(
msistring
)
*
entries
);
st
->
strings
=
msi_alloc_zero
(
sizeof
(
msistring
)
*
entries
);
if
(
!
st
)
{
HeapFree
(
GetProcessHeap
(),
0
,
st
);
msi_free
(
st
);
return
NULL
;
}
if
(
entries
<
1
)
...
...
@@ -98,10 +97,10 @@ VOID msi_destroy_stringtable( string_table *st )
for
(
i
=
0
;
i
<
st
->
maxcount
;
i
++
)
{
if
(
st
->
strings
[
i
].
refcount
)
HeapFree
(
GetProcessHeap
(),
0
,
st
->
strings
[
i
].
str
);
msi_free
(
st
->
strings
[
i
].
str
);
}
HeapFree
(
GetProcessHeap
(),
0
,
st
->
strings
);
HeapFree
(
GetProcessHeap
(),
0
,
st
);
msi_free
(
st
->
strings
);
msi_free
(
st
);
}
static
int
st_find_free_entry
(
string_table
*
st
)
...
...
@@ -123,8 +122,7 @@ static int st_find_free_entry( string_table *st )
/* dynamically resize */
sz
=
st
->
maxcount
+
1
+
st
->
maxcount
/
2
;
p
=
HeapReAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
st
->
strings
,
sz
*
sizeof
(
msistring
)
);
p
=
msi_realloc_zero
(
st
->
strings
,
sz
*
sizeof
(
msistring
)
);
if
(
!
p
)
return
-
1
;
st
->
strings
=
p
;
...
...
@@ -177,7 +175,7 @@ int msi_addstring( string_table *st, UINT n, const CHAR *data, int len, UINT ref
if
(
len
<
0
)
len
=
strlen
(
data
);
sz
=
MultiByteToWideChar
(
st
->
codepage
,
0
,
data
,
len
,
NULL
,
0
);
st
->
strings
[
n
].
str
=
HeapAlloc
(
GetProcessHeap
(),
0
,
(
sz
+
1
)
*
sizeof
(
WCHAR
)
);
st
->
strings
[
n
].
str
=
msi_alloc
(
(
sz
+
1
)
*
sizeof
(
WCHAR
)
);
if
(
!
st
->
strings
[
n
].
str
)
return
-
1
;
MultiByteToWideChar
(
st
->
codepage
,
0
,
data
,
len
,
st
->
strings
[
n
].
str
,
sz
);
...
...
@@ -226,7 +224,7 @@ int msi_addstringW( string_table *st, UINT n, const WCHAR *data, int len, UINT r
len
=
strlenW
(
data
);
TRACE
(
"%s, n = %d len = %d
\n
"
,
debugstr_w
(
data
),
n
,
len
);
st
->
strings
[
n
].
str
=
HeapAlloc
(
GetProcessHeap
(),
0
,
(
len
+
1
)
*
sizeof
(
WCHAR
)
);
st
->
strings
[
n
].
str
=
msi_alloc
(
(
len
+
1
)
*
sizeof
(
WCHAR
)
);
if
(
!
st
->
strings
[
n
].
str
)
return
-
1
;
TRACE
(
"%d
\n
"
,
__LINE__
);
...
...
@@ -387,13 +385,13 @@ UINT msi_string2idA( string_table *st, LPCSTR buffer, UINT *id )
sz
=
MultiByteToWideChar
(
st
->
codepage
,
0
,
buffer
,
-
1
,
NULL
,
0
);
if
(
sz
<=
0
)
return
r
;
str
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sz
*
sizeof
(
WCHAR
)
);
str
=
msi_alloc
(
sz
*
sizeof
(
WCHAR
)
);
if
(
!
str
)
return
ERROR_NOT_ENOUGH_MEMORY
;
MultiByteToWideChar
(
st
->
codepage
,
0
,
buffer
,
-
1
,
str
,
sz
);
r
=
msi_string2idW
(
st
,
str
,
id
);
HeapFree
(
GetProcessHeap
(),
0
,
str
);
msi_free
(
str
);
return
r
;
}
...
...
dlls/msi/suminfo.c
View file @
8dc28d53
...
...
@@ -95,7 +95,7 @@ static const WCHAR szSumInfo[] = { 5 ,'S','u','m','m','a','r','y',
static
void
free_prop
(
PROPVARIANT
*
prop
)
{
if
(
prop
->
vt
==
VT_LPSTR
)
HeapFree
(
GetProcessHeap
(),
0
,
prop
->
u
.
pszVal
);
msi_free
(
prop
->
u
.
pszVal
);
prop
->
vt
=
VT_EMPTY
;
}
...
...
@@ -207,7 +207,7 @@ static void read_properties_from_data( PROPVARIANT *prop, LPBYTE data, DWORD sz
if
(
type
==
VT_LPSTR
)
{
LPSTR
str
=
HeapAlloc
(
GetProcessHeap
(),
0
,
propdata
->
u
.
str
.
len
);
LPSTR
str
=
msi_alloc
(
propdata
->
u
.
str
.
len
);
memcpy
(
str
,
propdata
->
u
.
str
.
str
,
propdata
->
u
.
str
.
len
);
str
[
propdata
->
u
.
str
.
len
-
1
]
=
0
;
property
->
u
.
pszVal
=
str
;
...
...
@@ -273,7 +273,7 @@ static UINT load_summary_info( MSISUMMARYINFO *si, IStream *stm )
return
ret
;
}
data
=
HeapAlloc
(
GetProcessHeap
(),
0
,
section_hdr
.
cbSection
);
data
=
msi_alloc
(
section_hdr
.
cbSection
);
if
(
!
data
)
return
ret
;
...
...
@@ -287,7 +287,7 @@ static UINT load_summary_info( MSISUMMARYINFO *si, IStream *stm )
else
ERR
(
"failed to read properties %ld %ld
\n
"
,
count
,
sz
);
HeapFree
(
GetProcessHeap
(),
0
,
data
);
msi_free
(
data
);
return
ret
;
}
...
...
@@ -394,7 +394,7 @@ static UINT save_summary_info( MSISUMMARYINFO * si, IStream *stm )
section_hdr
.
cbSection
+=
sz
;
}
data
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
section_hdr
.
cbSection
);
data
=
msi_alloc_zero
(
section_hdr
.
cbSection
);
sz
=
0
;
memcpy
(
&
data
[
sz
],
&
section_hdr
,
sizeof
section_hdr
);
...
...
@@ -408,7 +408,7 @@ static UINT save_summary_info( MSISUMMARYINFO * si, IStream *stm )
sz
+=
write_property_to_data
(
&
si
->
property
[
i
],
&
data
[
sz
]
);
r
=
IStream_Write
(
stm
,
data
,
sz
,
&
count
);
HeapFree
(
GetProcessHeap
(),
0
,
data
);
msi_free
(
data
);
if
(
FAILED
(
r
)
||
count
!=
sz
)
return
ret
;
...
...
@@ -501,7 +501,7 @@ UINT WINAPI MsiGetSummaryInformationA(MSIHANDLE hDatabase,
ret
=
MsiGetSummaryInformationW
(
hDatabase
,
szwDatabase
,
uiUpdateCount
,
pHandle
);
HeapFree
(
GetProcessHeap
(),
0
,
szwDatabase
);
msi_free
(
szwDatabase
);
return
ret
;
}
...
...
@@ -676,14 +676,14 @@ static UINT set_prop( MSIHANDLE handle, UINT uiProperty, UINT uiDataType,
{
len
=
WideCharToMultiByte
(
CP_ACP
,
0
,
str
->
str
.
w
,
-
1
,
NULL
,
0
,
NULL
,
NULL
);
prop
->
u
.
pszVal
=
HeapAlloc
(
GetProcessHeap
(),
0
,
len
);
prop
->
u
.
pszVal
=
msi_alloc
(
len
);
WideCharToMultiByte
(
CP_ACP
,
0
,
str
->
str
.
w
,
-
1
,
prop
->
u
.
pszVal
,
len
,
NULL
,
NULL
);
}
else
{
len
=
lstrlenA
(
str
->
str
.
a
)
+
1
;
prop
->
u
.
pszVal
=
HeapAlloc
(
GetProcessHeap
(),
0
,
len
);
prop
->
u
.
pszVal
=
msi_alloc
(
len
);
lstrcpyA
(
prop
->
u
.
pszVal
,
str
->
str
.
a
);
}
break
;
...
...
dlls/msi/update.c
View file @
8dc28d53
...
...
@@ -172,7 +172,7 @@ static UINT UPDATE_delete( struct tagMSIVIEW *view )
if
(
wv
)
wv
->
ops
->
delete
(
wv
);
msiobj_release
(
&
uv
->
db
->
hdr
);
HeapFree
(
GetProcessHeap
(),
0
,
uv
);
msi_free
(
uv
);
return
ERROR_SUCCESS
;
}
...
...
@@ -223,7 +223,7 @@ UINT UPDATE_CreateView( MSIDATABASE *db, MSIVIEW **view, LPWSTR table,
return
r
;
}
uv
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
*
uv
);
uv
=
msi_alloc_zero
(
sizeof
*
uv
);
if
(
!
uv
)
return
ERROR_FUNCTION_FAILED
;
...
...
dlls/msi/upgrade.c
View file @
8dc28d53
...
...
@@ -82,7 +82,7 @@ static void append_productcode(MSIPACKAGE* package, LPCWSTR action_property,
/*null*/
len
++
;
newprop
=
HeapAlloc
(
GetProcessHeap
(),
0
,
len
*
sizeof
(
WCHAR
)
);
newprop
=
msi_alloc
(
len
*
sizeof
(
WCHAR
)
);
if
(
prop
)
{
...
...
@@ -96,8 +96,8 @@ static void append_productcode(MSIPACKAGE* package, LPCWSTR action_property,
MSI_SetPropertyW
(
package
,
action_property
,
newprop
);
TRACE
(
"Found Related Product... %s now %s
\n
"
,
debugstr_w
(
action_property
),
debugstr_w
(
newprop
));
HeapFree
(
GetProcessHeap
(),
0
,
prop
);
HeapFree
(
GetProcessHeap
(),
0
,
newprop
);
msi_free
(
prop
);
msi_free
(
newprop
);
}
static
UINT
ITERATE_FindRelatedProducts
(
MSIRECORD
*
rec
,
LPVOID
param
)
...
...
dlls/msi/where.c
View file @
8dc28d53
...
...
@@ -242,7 +242,7 @@ static UINT WHERE_execute( struct tagMSIVIEW *view, MSIRECORD *record )
if
(
r
!=
ERROR_SUCCESS
)
return
r
;
wv
->
reorder
=
HeapAlloc
(
GetProcessHeap
(),
0
,
count
*
sizeof
(
UINT
)
);
wv
->
reorder
=
msi_alloc
(
count
*
sizeof
(
UINT
)
);
if
(
!
wv
->
reorder
)
return
ERROR_FUNCTION_FAILED
;
...
...
@@ -269,7 +269,7 @@ static UINT WHERE_close( struct tagMSIVIEW *view )
if
(
!
wv
->
table
)
return
ERROR_FUNCTION_FAILED
;
HeapFree
(
GetProcessHeap
(),
0
,
wv
->
reorder
);
msi_free
(
wv
->
reorder
);
wv
->
reorder
=
NULL
;
return
wv
->
table
->
ops
->
close
(
wv
->
table
);
...
...
@@ -329,12 +329,12 @@ static UINT WHERE_delete( struct tagMSIVIEW *view )
if
(
wv
->
table
)
wv
->
table
->
ops
->
delete
(
wv
->
table
);
HeapFree
(
GetProcessHeap
(),
0
,
wv
->
reorder
);
msi_free
(
wv
->
reorder
);
wv
->
reorder
=
NULL
;
wv
->
row_count
=
0
;
msiobj_release
(
&
wv
->
db
->
hdr
);
HeapFree
(
GetProcessHeap
(),
0
,
wv
);
msi_free
(
wv
);
return
ERROR_SUCCESS
;
}
...
...
@@ -462,7 +462,7 @@ UINT WHERE_CreateView( MSIDATABASE *db, MSIVIEW **view, MSIVIEW *table,
return
ERROR_FUNCTION_FAILED
;
}
wv
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
*
wv
);
wv
=
msi_alloc_zero
(
sizeof
*
wv
);
if
(
!
wv
)
return
ERROR_FUNCTION_FAILED
;
...
...
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