wbemprox: Use CRT allocation functions.
Signed-off-by: Hans Leidekker <hans@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
d8e8ab21c0
commit
a89db3180f
|
@ -1055,7 +1055,7 @@ static BOOL resize_table( struct table *table, UINT row_count, UINT row_size )
|
|||
{
|
||||
if (!table->num_rows_allocated)
|
||||
{
|
||||
if (!(table->data = heap_alloc( row_count * row_size ))) return FALSE;
|
||||
if (!(table->data = malloc( row_count * row_size ))) return FALSE;
|
||||
table->num_rows_allocated = row_count;
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -1063,7 +1063,7 @@ static BOOL resize_table( struct table *table, UINT row_count, UINT row_size )
|
|||
{
|
||||
BYTE *data;
|
||||
UINT count = max( row_count, table->num_rows_allocated * 2 );
|
||||
if (!(data = heap_realloc( table->data, count * row_size ))) return FALSE;
|
||||
if (!(data = realloc( table->data, count * row_size ))) return FALSE;
|
||||
table->data = data;
|
||||
table->num_rows_allocated = count;
|
||||
}
|
||||
|
@ -1250,7 +1250,7 @@ static enum fill_status fill_baseboard( struct table *table, const struct expr *
|
|||
if (!resize_table( table, 1, sizeof(*rec) )) return FILL_STATUS_FAILED;
|
||||
|
||||
len = GetSystemFirmwareTable( RSMB, 0, NULL, 0 );
|
||||
if (!(buf = heap_alloc( len ))) return FILL_STATUS_FAILED;
|
||||
if (!(buf = malloc( len ))) return FILL_STATUS_FAILED;
|
||||
GetSystemFirmwareTable( RSMB, 0, buf, len );
|
||||
|
||||
rec = (struct record_baseboard *)table->data;
|
||||
|
@ -1264,7 +1264,7 @@ static enum fill_status fill_baseboard( struct table *table, const struct expr *
|
|||
if (!match_row( table, row, cond, &status )) free_row_values( table, row );
|
||||
else row++;
|
||||
|
||||
heap_free( buf );
|
||||
free( buf );
|
||||
|
||||
TRACE("created %u rows\n", row);
|
||||
table->num_rows = row;
|
||||
|
@ -1331,7 +1331,7 @@ static WCHAR *convert_bios_date( const WCHAR *str )
|
|||
else if (q - p == 2) year = 1900 + (p[0] - '0') * 10 + p[1] - '0';
|
||||
else return NULL;
|
||||
|
||||
if (!(ret = heap_alloc( sizeof(fmtW) ))) return NULL;
|
||||
if (!(ret = malloc( sizeof(fmtW) ))) return NULL;
|
||||
swprintf( ret, ARRAY_SIZE(fmtW), fmtW, year, month, day );
|
||||
return ret;
|
||||
}
|
||||
|
@ -1340,7 +1340,7 @@ static WCHAR *get_bios_releasedate( const char *buf, UINT len )
|
|||
{
|
||||
WCHAR *ret, *date = get_bios_string( 3, buf, len );
|
||||
if (!date || !(ret = convert_bios_date( date ))) ret = heap_strdupW( L"20120608000000.000000+000" );
|
||||
heap_free( date );
|
||||
free( date );
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -1409,7 +1409,7 @@ static enum fill_status fill_bios( struct table *table, const struct expr *cond
|
|||
if (!resize_table( table, 1, sizeof(*rec) )) return FILL_STATUS_FAILED;
|
||||
|
||||
len = GetSystemFirmwareTable( RSMB, 0, NULL, 0 );
|
||||
if (!(buf = heap_alloc( len ))) return FILL_STATUS_FAILED;
|
||||
if (!(buf = malloc( len ))) return FILL_STATUS_FAILED;
|
||||
GetSystemFirmwareTable( RSMB, 0, buf, len );
|
||||
|
||||
rec = (struct record_bios *)table->data;
|
||||
|
@ -1431,7 +1431,7 @@ static enum fill_status fill_bios( struct table *table, const struct expr *cond
|
|||
if (!match_row( table, row, cond, &status )) free_row_values( table, row );
|
||||
else row++;
|
||||
|
||||
heap_free( buf );
|
||||
free( buf );
|
||||
|
||||
TRACE("created %u rows\n", row);
|
||||
table->num_rows = row;
|
||||
|
@ -1500,11 +1500,11 @@ static UINT get_logical_processor_count( UINT *num_physical, UINT *num_packages
|
|||
status = NtQuerySystemInformationEx( SystemLogicalProcessorInformationEx, &all, sizeof(all), NULL, 0, &len );
|
||||
if (status != STATUS_INFO_LENGTH_MISMATCH) return get_processor_count();
|
||||
|
||||
if (!(buf = heap_alloc( len ))) return get_processor_count();
|
||||
if (!(buf = malloc( len ))) return get_processor_count();
|
||||
status = NtQuerySystemInformationEx( SystemLogicalProcessorInformationEx, &all, sizeof(all), buf, len, NULL );
|
||||
if (status != STATUS_SUCCESS)
|
||||
{
|
||||
heap_free( buf );
|
||||
free( buf );
|
||||
return get_processor_count();
|
||||
}
|
||||
|
||||
|
@ -1524,7 +1524,7 @@ static UINT get_logical_processor_count( UINT *num_physical, UINT *num_packages
|
|||
offset += entry->Size;
|
||||
}
|
||||
|
||||
heap_free( buf );
|
||||
free( buf );
|
||||
if (num_physical) *num_physical = core_relation_count;
|
||||
if (num_packages) *num_packages = package_relation_count;
|
||||
return smt_enabled ? core_relation_count * 2 : core_relation_count;
|
||||
|
@ -1553,7 +1553,7 @@ static WCHAR *get_computername(void)
|
|||
WCHAR *ret;
|
||||
DWORD size = MAX_COMPUTERNAME_LENGTH + 1;
|
||||
|
||||
if (!(ret = heap_alloc( size * sizeof(WCHAR) ))) return NULL;
|
||||
if (!(ret = malloc( size * sizeof(WCHAR) ))) return NULL;
|
||||
GetComputerNameW( ret, &size );
|
||||
return ret;
|
||||
}
|
||||
|
@ -1569,7 +1569,7 @@ static WCHAR *get_username(void)
|
|||
usersize = 0;
|
||||
GetUserNameW( NULL, &usersize );
|
||||
size = compsize + usersize; /* two null terminators account for the \ */
|
||||
if (!(ret = heap_alloc( size * sizeof(WCHAR) ))) return NULL;
|
||||
if (!(ret = malloc( size * sizeof(WCHAR) ))) return NULL;
|
||||
GetComputerNameW( ret, &compsize );
|
||||
ret[compsize] = '\\';
|
||||
GetUserNameW( ret + compsize + 1, &usersize );
|
||||
|
@ -1639,7 +1639,7 @@ static WCHAR *get_compsysproduct_uuid( const char *buf, UINT len )
|
|||
|
||||
if (!(hdr = find_smbios_entry( SMBIOS_TYPE_SYSTEM, buf, len )) || hdr->length < sizeof(*system)) goto done;
|
||||
system = (const struct smbios_system *)hdr;
|
||||
if (!memcmp( system->uuid, none, sizeof(none) ) || !(ret = heap_alloc( 37 * sizeof(WCHAR) ))) goto done;
|
||||
if (!memcmp( system->uuid, none, sizeof(none) ) || !(ret = malloc( 37 * sizeof(WCHAR) ))) goto done;
|
||||
|
||||
ptr = system->uuid;
|
||||
swprintf( ret, 37, L"%02X%02X%02X%02X-%02X%02X-%02X%02X-%02X%02X-%02X%02X%02X%02X%02X%02X", ptr[0], ptr[1],
|
||||
|
@ -1674,7 +1674,7 @@ static enum fill_status fill_compsysproduct( struct table *table, const struct e
|
|||
if (!resize_table( table, 1, sizeof(*rec) )) return FILL_STATUS_FAILED;
|
||||
|
||||
len = GetSystemFirmwareTable( RSMB, 0, NULL, 0 );
|
||||
if (!(buf = heap_alloc( len ))) return FILL_STATUS_FAILED;
|
||||
if (!(buf = malloc( len ))) return FILL_STATUS_FAILED;
|
||||
GetSystemFirmwareTable( RSMB, 0, buf, len );
|
||||
|
||||
rec = (struct record_computersystemproduct *)table->data;
|
||||
|
@ -1687,7 +1687,7 @@ static enum fill_status fill_compsysproduct( struct table *table, const struct e
|
|||
if (!match_row( table, row, cond, &status )) free_row_values( table, row );
|
||||
else row++;
|
||||
|
||||
heap_free( buf );
|
||||
free( buf );
|
||||
|
||||
TRACE("created %u rows\n", row);
|
||||
table->num_rows = row;
|
||||
|
@ -1706,16 +1706,16 @@ static struct dirstack *alloc_dirstack( UINT size )
|
|||
{
|
||||
struct dirstack *dirstack;
|
||||
|
||||
if (!(dirstack = heap_alloc( sizeof(*dirstack) ))) return NULL;
|
||||
if (!(dirstack->dirs = heap_alloc( sizeof(WCHAR *) * size )))
|
||||
if (!(dirstack = malloc( sizeof(*dirstack) ))) return NULL;
|
||||
if (!(dirstack->dirs = malloc( sizeof(WCHAR *) * size )))
|
||||
{
|
||||
heap_free( dirstack );
|
||||
free( dirstack );
|
||||
return NULL;
|
||||
}
|
||||
if (!(dirstack->len_dirs = heap_alloc( sizeof(UINT) * size )))
|
||||
if (!(dirstack->len_dirs = malloc( sizeof(UINT) * size )))
|
||||
{
|
||||
heap_free( dirstack->dirs );
|
||||
heap_free( dirstack );
|
||||
free( dirstack->dirs );
|
||||
free( dirstack );
|
||||
return NULL;
|
||||
}
|
||||
dirstack->num_dirs = 0;
|
||||
|
@ -1726,16 +1726,16 @@ static struct dirstack *alloc_dirstack( UINT size )
|
|||
static void clear_dirstack( struct dirstack *dirstack )
|
||||
{
|
||||
UINT i;
|
||||
for (i = 0; i < dirstack->num_dirs; i++) heap_free( dirstack->dirs[i] );
|
||||
for (i = 0; i < dirstack->num_dirs; i++) free( dirstack->dirs[i] );
|
||||
dirstack->num_dirs = 0;
|
||||
}
|
||||
|
||||
static void free_dirstack( struct dirstack *dirstack )
|
||||
{
|
||||
clear_dirstack( dirstack );
|
||||
heap_free( dirstack->dirs );
|
||||
heap_free( dirstack->len_dirs );
|
||||
heap_free( dirstack );
|
||||
free( dirstack->dirs );
|
||||
free( dirstack->len_dirs );
|
||||
free( dirstack );
|
||||
}
|
||||
|
||||
static BOOL push_dir( struct dirstack *dirstack, WCHAR *dir, UINT len )
|
||||
|
@ -1750,9 +1750,9 @@ static BOOL push_dir( struct dirstack *dirstack, WCHAR *dir, UINT len )
|
|||
UINT *len_tmp;
|
||||
|
||||
size = dirstack->num_allocated * 2;
|
||||
if (!(tmp = heap_realloc( dirstack->dirs, size * sizeof(WCHAR *) ))) return FALSE;
|
||||
if (!(tmp = realloc( dirstack->dirs, size * sizeof(WCHAR *) ))) return FALSE;
|
||||
dirstack->dirs = tmp;
|
||||
if (!(len_tmp = heap_realloc( dirstack->len_dirs, size * sizeof(UINT) ))) return FALSE;
|
||||
if (!(len_tmp = realloc( dirstack->len_dirs, size * sizeof(UINT) ))) return FALSE;
|
||||
dirstack->len_dirs = len_tmp;
|
||||
dirstack->num_allocated = size;
|
||||
}
|
||||
|
@ -1785,7 +1785,7 @@ static WCHAR *build_glob( WCHAR drive, const WCHAR *path, UINT len )
|
|||
UINT i = 0;
|
||||
WCHAR *ret;
|
||||
|
||||
if (!(ret = heap_alloc( (len + 6) * sizeof(WCHAR) ))) return NULL;
|
||||
if (!(ret = malloc( (len + 6) * sizeof(WCHAR) ))) return NULL;
|
||||
ret[i++] = drive;
|
||||
ret[i++] = ':';
|
||||
ret[i++] = '\\';
|
||||
|
@ -1811,7 +1811,7 @@ static WCHAR *build_name( WCHAR drive, const WCHAR *path )
|
|||
if (*p == '\\') len += 2;
|
||||
else len++;
|
||||
};
|
||||
if (!(ret = heap_alloc( (len + 5) * sizeof(WCHAR) ))) return NULL;
|
||||
if (!(ret = malloc( (len + 5) * sizeof(WCHAR) ))) return NULL;
|
||||
ret[i++] = drive;
|
||||
ret[i++] = ':';
|
||||
ret[i++] = '\\';
|
||||
|
@ -1844,7 +1844,7 @@ static WCHAR *build_dirname( const WCHAR *path, UINT *ret_len )
|
|||
while (p >= start && *p != '\\') { len--; p--; };
|
||||
while (p >= start && *p == '\\') { len--; p--; };
|
||||
|
||||
if (!(ret = heap_alloc( (len + 1) * sizeof(WCHAR) ))) return NULL;
|
||||
if (!(ret = malloc( (len + 1) * sizeof(WCHAR) ))) return NULL;
|
||||
for (i = 0, p = start; p < start + len; p++)
|
||||
{
|
||||
if (p[0] == '\\' && p[1] == '\\')
|
||||
|
@ -1897,11 +1897,11 @@ static UINT seed_dirs( struct dirstack *dirstack, const struct expr *cond, WCHAR
|
|||
{
|
||||
if (seen_dir( dirstack, path ))
|
||||
{
|
||||
heap_free( path );
|
||||
free( path );
|
||||
return ++*count;
|
||||
}
|
||||
else if (push_dir( dirstack, path, len )) return ++*count;
|
||||
heap_free( path );
|
||||
free( path );
|
||||
return *count = 0;
|
||||
}
|
||||
}
|
||||
|
@ -1923,7 +1923,7 @@ static WCHAR *append_path( const WCHAR *path, const WCHAR *segment, UINT *len )
|
|||
|
||||
*len = 0;
|
||||
if (path) len_path = lstrlenW( path );
|
||||
if (!(ret = heap_alloc( (len_path + len_segment + 2) * sizeof(WCHAR) ))) return NULL;
|
||||
if (!(ret = malloc( (len_path + len_segment + 2) * sizeof(WCHAR) ))) return NULL;
|
||||
if (path && len_path)
|
||||
{
|
||||
memcpy( ret, path, len_path * sizeof(WCHAR) );
|
||||
|
@ -1943,22 +1943,22 @@ static WCHAR *get_file_version( const WCHAR *filename )
|
|||
void *block;
|
||||
WCHAR *ret;
|
||||
|
||||
if (!(ret = heap_alloc( len * sizeof(WCHAR) ))) return NULL;
|
||||
if (!(size = GetFileVersionInfoSizeW( filename, NULL )) || !(block = heap_alloc( size )))
|
||||
if (!(ret = malloc( len * sizeof(WCHAR) ))) return NULL;
|
||||
if (!(size = GetFileVersionInfoSizeW( filename, NULL )) || !(block = malloc( size )))
|
||||
{
|
||||
heap_free( ret );
|
||||
free( ret );
|
||||
return NULL;
|
||||
}
|
||||
if (!GetFileVersionInfoW( filename, 0, size, block ) ||
|
||||
!VerQueryValueW( block, L"\\", (void **)&info, &size ))
|
||||
{
|
||||
heap_free( block );
|
||||
heap_free( ret );
|
||||
free( block );
|
||||
free( ret );
|
||||
return NULL;
|
||||
}
|
||||
swprintf( ret, len, L"%u.%u.%u.%u", info->dwFileVersionMS >> 16, info->dwFileVersionMS & 0xffff,
|
||||
info->dwFileVersionLS >> 16, info->dwFileVersionLS & 0xffff );
|
||||
heap_free( block );
|
||||
free( block );
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -1989,8 +1989,8 @@ static enum fill_status fill_datafile( struct table *table, const struct expr *c
|
|||
|
||||
for (;;)
|
||||
{
|
||||
heap_free( glob );
|
||||
heap_free( path );
|
||||
free( glob );
|
||||
free( path );
|
||||
path = pop_dir( dirstack, &len );
|
||||
if (!(glob = build_glob( root[0], path, len )))
|
||||
{
|
||||
|
@ -2019,7 +2019,7 @@ static enum fill_status fill_datafile( struct table *table, const struct expr *c
|
|||
if (data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
|
||||
{
|
||||
if (push_dir( dirstack, new_path, len )) continue;
|
||||
heap_free( new_path );
|
||||
free( new_path );
|
||||
FindClose( handle );
|
||||
status = FILL_STATUS_FAILED;
|
||||
goto done;
|
||||
|
@ -2027,7 +2027,7 @@ static enum fill_status fill_datafile( struct table *table, const struct expr *c
|
|||
rec = (struct record_datafile *)(table->data + offset);
|
||||
rec->name = build_name( root[0], new_path );
|
||||
rec->version = get_file_version( rec->name );
|
||||
heap_free( new_path );
|
||||
free( new_path );
|
||||
if (!match_row( table, row, cond, &status ))
|
||||
{
|
||||
free_row_values( table, row );
|
||||
|
@ -2052,8 +2052,8 @@ static enum fill_status fill_datafile( struct table *table, const struct expr *c
|
|||
|
||||
done:
|
||||
free_dirstack( dirstack );
|
||||
heap_free( glob );
|
||||
heap_free( path );
|
||||
free( glob );
|
||||
free( path );
|
||||
|
||||
TRACE("created %u rows\n", row);
|
||||
table->num_rows = row;
|
||||
|
@ -2117,8 +2117,8 @@ static enum fill_status fill_directory( struct table *table, const struct expr *
|
|||
|
||||
for (;;)
|
||||
{
|
||||
heap_free( glob );
|
||||
heap_free( path );
|
||||
free( glob );
|
||||
free( path );
|
||||
path = pop_dir( dirstack, &len );
|
||||
if (!(glob = build_glob( root[0], path, len )))
|
||||
{
|
||||
|
@ -2148,7 +2148,7 @@ static enum fill_status fill_directory( struct table *table, const struct expr *
|
|||
|
||||
if (!(push_dir( dirstack, new_path, len )))
|
||||
{
|
||||
heap_free( new_path );
|
||||
free( new_path );
|
||||
FindClose( handle );
|
||||
status = FILL_STATUS_FAILED;
|
||||
goto done;
|
||||
|
@ -2156,7 +2156,7 @@ static enum fill_status fill_directory( struct table *table, const struct expr *
|
|||
rec = (struct record_directory *)(table->data + offset);
|
||||
rec->accessmask = FILE_ALL_ACCESS;
|
||||
rec->name = build_name( root[0], new_path );
|
||||
heap_free( new_path );
|
||||
free( new_path );
|
||||
if (!match_row( table, row, cond, &status ))
|
||||
{
|
||||
free_row_values( table, row );
|
||||
|
@ -2181,8 +2181,8 @@ static enum fill_status fill_directory( struct table *table, const struct expr *
|
|||
|
||||
done:
|
||||
free_dirstack( dirstack );
|
||||
heap_free( glob );
|
||||
heap_free( path );
|
||||
free( glob );
|
||||
free( path );
|
||||
|
||||
TRACE("created %u rows\n", row);
|
||||
table->num_rows = row;
|
||||
|
@ -2229,15 +2229,15 @@ static WCHAR *get_diskdrive_serialnumber( WCHAR letter )
|
|||
size = sizeof(*desc) + 256;
|
||||
for (;;)
|
||||
{
|
||||
if (!(desc = heap_alloc( size ))) break;
|
||||
if (!(desc = malloc( size ))) break;
|
||||
if (DeviceIoControl( handle, IOCTL_STORAGE_QUERY_PROPERTY, &query, sizeof(query), desc, size, NULL, NULL ))
|
||||
{
|
||||
if (desc->SerialNumberOffset) ret = heap_strdupAW( (const char *)desc + desc->SerialNumberOffset );
|
||||
heap_free( desc );
|
||||
free( desc );
|
||||
break;
|
||||
}
|
||||
size = desc->Size;
|
||||
heap_free( desc );
|
||||
free( desc );
|
||||
if (GetLastError() != ERROR_MORE_DATA) break;
|
||||
}
|
||||
|
||||
|
@ -2308,10 +2308,10 @@ static void free_associations( struct association *assoc, UINT count )
|
|||
if (!assoc) return;
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
heap_free( assoc[i].ref );
|
||||
heap_free( assoc[i].ref2 );
|
||||
free( assoc[i].ref );
|
||||
free( assoc[i].ref2 );
|
||||
}
|
||||
heap_free( assoc );
|
||||
free( assoc );
|
||||
}
|
||||
|
||||
static struct association *get_diskdrivetodiskpartition_pairs( UINT *count )
|
||||
|
@ -2332,7 +2332,7 @@ static struct association *get_diskdrivetodiskpartition_pairs( UINT *count )
|
|||
&query2->view, &query2->mem )) != S_OK) goto done;
|
||||
if ((hr = execute_view( query2->view )) != S_OK) goto done;
|
||||
|
||||
if (!(ret = heap_alloc_zero( query->view->result_count * sizeof(*ret) ))) goto done;
|
||||
if (!(ret = calloc( query->view->result_count, sizeof(*ret) ))) goto done;
|
||||
|
||||
for (i = 0; i < query->view->result_count; i++)
|
||||
{
|
||||
|
@ -2387,7 +2387,7 @@ static enum fill_status fill_diskdrivetodiskpartition( struct table *table, cons
|
|||
row++;
|
||||
}
|
||||
|
||||
heap_free( assoc );
|
||||
free( assoc );
|
||||
|
||||
TRACE("created %u rows\n", row);
|
||||
table->num_rows = row;
|
||||
|
@ -2491,7 +2491,7 @@ static WCHAR *get_ip4_string( DWORD addr )
|
|||
DWORD len = sizeof("ddd.ddd.ddd.ddd");
|
||||
WCHAR *ret;
|
||||
|
||||
if (!(ret = heap_alloc( len * sizeof(WCHAR) ))) return NULL;
|
||||
if (!(ret = malloc( len * sizeof(WCHAR) ))) return NULL;
|
||||
swprintf( ret, len, L"%u.%u.%u.%u", (addr >> 24) & 0xff, (addr >> 16) & 0xff, (addr >> 8) & 0xff, addr & 0xff );
|
||||
return ret;
|
||||
}
|
||||
|
@ -2504,15 +2504,15 @@ static enum fill_status fill_ip4routetable( struct table *table, const struct ex
|
|||
enum fill_status status = FILL_STATUS_UNFILTERED;
|
||||
|
||||
if (GetIpForwardTable( NULL, &size, TRUE ) != ERROR_INSUFFICIENT_BUFFER) return FILL_STATUS_FAILED;
|
||||
if (!(forwards = heap_alloc( size ))) return FILL_STATUS_FAILED;
|
||||
if (!(forwards = malloc( size ))) return FILL_STATUS_FAILED;
|
||||
if (GetIpForwardTable( forwards, &size, TRUE ))
|
||||
{
|
||||
heap_free( forwards );
|
||||
free( forwards );
|
||||
return FILL_STATUS_FAILED;
|
||||
}
|
||||
if (!resize_table( table, max(forwards->dwNumEntries, 1), sizeof(*rec) ))
|
||||
{
|
||||
heap_free( forwards );
|
||||
free( forwards );
|
||||
return FILL_STATUS_FAILED;
|
||||
}
|
||||
|
||||
|
@ -2535,7 +2535,7 @@ static enum fill_status fill_ip4routetable( struct table *table, const struct ex
|
|||
TRACE("created %u rows\n", row);
|
||||
table->num_rows = row;
|
||||
|
||||
heap_free( forwards );
|
||||
free( forwards );
|
||||
return status;
|
||||
}
|
||||
|
||||
|
@ -2621,7 +2621,7 @@ static struct association *get_logicaldisktopartition_pairs( UINT *count )
|
|||
&query2->mem )) != S_OK) goto done;
|
||||
if ((hr = execute_view( query2->view )) != S_OK) goto done;
|
||||
|
||||
if (!(ret = heap_alloc_zero( query->view->result_count * sizeof(*ret) ))) goto done;
|
||||
if (!(ret = calloc( query->view->result_count, sizeof(*ret) ))) goto done;
|
||||
|
||||
/* assume fixed and removable disks are enumerated in the same order as partitions */
|
||||
for (i = 0; i < query->view->result_count; i++)
|
||||
|
@ -2677,7 +2677,7 @@ static enum fill_status fill_logicaldisktopartition( struct table *table, const
|
|||
row++;
|
||||
}
|
||||
|
||||
heap_free( assoc );
|
||||
free( assoc );
|
||||
|
||||
TRACE("created %u rows\n", row);
|
||||
table->num_rows = row;
|
||||
|
@ -2701,7 +2701,7 @@ static UINT16 get_connection_status( IF_OPER_STATUS status )
|
|||
static WCHAR *get_mac_address( const BYTE *addr, DWORD len )
|
||||
{
|
||||
WCHAR *ret;
|
||||
if (len != 6 || !(ret = heap_alloc( 18 * sizeof(WCHAR) ))) return NULL;
|
||||
if (len != 6 || !(ret = malloc( 18 * sizeof(WCHAR) ))) return NULL;
|
||||
swprintf( ret, 18, L"%02x:%02x:%02x:%02x:%02x:%02x", addr[0], addr[1], addr[2], addr[3], addr[4], addr[5] );
|
||||
return ret;
|
||||
}
|
||||
|
@ -2740,7 +2740,7 @@ static const WCHAR *get_adaptertype( DWORD type, int *id, int *physical )
|
|||
static WCHAR *guid_to_str( const GUID *ptr )
|
||||
{
|
||||
WCHAR *ret;
|
||||
if (!(ret = heap_alloc( GUID_SIZE * sizeof(WCHAR) ))) return NULL;
|
||||
if (!(ret = malloc( GUID_SIZE * sizeof(WCHAR) ))) return NULL;
|
||||
swprintf( ret, GUID_SIZE, L"{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
|
||||
ptr->Data1, ptr->Data2, ptr->Data3, ptr->Data4[0], ptr->Data4[1], ptr->Data4[2],
|
||||
ptr->Data4[3], ptr->Data4[4], ptr->Data4[5], ptr->Data4[6], ptr->Data4[7] );
|
||||
|
@ -2767,10 +2767,10 @@ static enum fill_status fill_networkadapter( struct table *table, const struct e
|
|||
ret = GetAdaptersAddresses( AF_UNSPEC, 0, NULL, NULL, &size );
|
||||
if (ret != ERROR_BUFFER_OVERFLOW) return FILL_STATUS_FAILED;
|
||||
|
||||
if (!(buffer = heap_alloc( size ))) return FILL_STATUS_FAILED;
|
||||
if (!(buffer = malloc( size ))) return FILL_STATUS_FAILED;
|
||||
if (GetAdaptersAddresses( AF_UNSPEC, 0, NULL, buffer, &size ))
|
||||
{
|
||||
heap_free( buffer );
|
||||
free( buffer );
|
||||
return FILL_STATUS_FAILED;
|
||||
}
|
||||
for (aa = buffer; aa; aa = aa->Next)
|
||||
|
@ -2779,7 +2779,7 @@ static enum fill_status fill_networkadapter( struct table *table, const struct e
|
|||
}
|
||||
if (!resize_table( table, count, sizeof(*rec) ))
|
||||
{
|
||||
heap_free( buffer );
|
||||
free( buffer );
|
||||
return FILL_STATUS_FAILED;
|
||||
}
|
||||
for (aa = buffer; aa; aa = aa->Next)
|
||||
|
@ -2814,7 +2814,7 @@ static enum fill_status fill_networkadapter( struct table *table, const struct e
|
|||
TRACE("created %u rows\n", row);
|
||||
table->num_rows = row;
|
||||
|
||||
heap_free( buffer );
|
||||
free( buffer );
|
||||
return status;
|
||||
}
|
||||
|
||||
|
@ -2838,10 +2838,10 @@ static struct array *get_defaultipgateway( IP_ADAPTER_GATEWAY_ADDRESS *list )
|
|||
if (!list) return NULL;
|
||||
for (gateway = list; gateway; gateway = gateway->Next) count++;
|
||||
|
||||
if (!(ret = heap_alloc( sizeof(*ret) ))) return NULL;
|
||||
if (!(ptr = heap_alloc( sizeof(*ptr) * count )))
|
||||
if (!(ret = malloc( sizeof(*ret) ))) return NULL;
|
||||
if (!(ptr = malloc( sizeof(*ptr) * count )))
|
||||
{
|
||||
heap_free( ret );
|
||||
free( ret );
|
||||
return NULL;
|
||||
}
|
||||
for (gateway = list; gateway; gateway = gateway->Next)
|
||||
|
@ -2850,9 +2850,9 @@ static struct array *get_defaultipgateway( IP_ADAPTER_GATEWAY_ADDRESS *list )
|
|||
if (WSAAddressToStringW( gateway->Address.lpSockaddr, gateway->Address.iSockaddrLength,
|
||||
NULL, buf, &buflen) || !(ptr[i++] = heap_strdupW( buf )))
|
||||
{
|
||||
for (; i > 0; i--) heap_free( ptr[i - 1] );
|
||||
heap_free( ptr );
|
||||
heap_free( ret );
|
||||
for (; i > 0; i--) free( ptr[i - 1] );
|
||||
free( ptr );
|
||||
free( ret );
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
@ -2871,10 +2871,10 @@ static struct array *get_dnsserversearchorder( IP_ADAPTER_DNS_SERVER_ADDRESS *li
|
|||
if (!list) return NULL;
|
||||
for (server = list; server; server = server->Next) count++;
|
||||
|
||||
if (!(ret = heap_alloc( sizeof(*ret) ))) return NULL;
|
||||
if (!(ptr = heap_alloc( sizeof(*ptr) * count )))
|
||||
if (!(ret = malloc( sizeof(*ret) ))) return NULL;
|
||||
if (!(ptr = malloc( sizeof(*ptr) * count )))
|
||||
{
|
||||
heap_free( ret );
|
||||
free( ret );
|
||||
return NULL;
|
||||
}
|
||||
for (server = list; server; server = server->Next)
|
||||
|
@ -2883,9 +2883,9 @@ static struct array *get_dnsserversearchorder( IP_ADAPTER_DNS_SERVER_ADDRESS *li
|
|||
if (WSAAddressToStringW( server->Address.lpSockaddr, server->Address.iSockaddrLength,
|
||||
NULL, buf, &buflen) || !(ptr[i++] = heap_strdupW( buf )))
|
||||
{
|
||||
for (; i > 0; i--) heap_free( ptr[i - 1] );
|
||||
heap_free( ptr );
|
||||
heap_free( ret );
|
||||
for (; i > 0; i--) free( ptr[i - 1] );
|
||||
free( ptr );
|
||||
free( ret );
|
||||
return NULL;
|
||||
}
|
||||
if ((p = wcsrchr( ptr[i - 1], ':' ))) *p = 0;
|
||||
|
@ -2905,10 +2905,10 @@ static struct array *get_ipaddress( IP_ADAPTER_UNICAST_ADDRESS_LH *list )
|
|||
if (!list) return NULL;
|
||||
for (address = list; address; address = address->Next) count++;
|
||||
|
||||
if (!(ret = heap_alloc( sizeof(*ret) ))) return NULL;
|
||||
if (!(ptr = heap_alloc( sizeof(*ptr) * count )))
|
||||
if (!(ret = malloc( sizeof(*ret) ))) return NULL;
|
||||
if (!(ptr = malloc( sizeof(*ptr) * count )))
|
||||
{
|
||||
heap_free( ret );
|
||||
free( ret );
|
||||
return NULL;
|
||||
}
|
||||
for (address = list; address; address = address->Next)
|
||||
|
@ -2917,9 +2917,9 @@ static struct array *get_ipaddress( IP_ADAPTER_UNICAST_ADDRESS_LH *list )
|
|||
if (WSAAddressToStringW( address->Address.lpSockaddr, address->Address.iSockaddrLength,
|
||||
NULL, buf, &buflen) || !(ptr[i++] = heap_strdupW( buf )))
|
||||
{
|
||||
for (; i > 0; i--) heap_free( ptr[i - 1] );
|
||||
heap_free( ptr );
|
||||
heap_free( ret );
|
||||
for (; i > 0; i--) free( ptr[i - 1] );
|
||||
free( ptr );
|
||||
free( ret );
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
@ -2938,10 +2938,10 @@ static struct array *get_ipsubnet( IP_ADAPTER_UNICAST_ADDRESS_LH *list )
|
|||
if (!list) return NULL;
|
||||
for (address = list; address; address = address->Next) count++;
|
||||
|
||||
if (!(ret = heap_alloc( sizeof(*ret) ))) return NULL;
|
||||
if (!(ptr = heap_alloc( sizeof(*ptr) * count )))
|
||||
if (!(ret = malloc( sizeof(*ret) ))) return NULL;
|
||||
if (!(ptr = malloc( sizeof(*ptr) * count )))
|
||||
{
|
||||
heap_free( ret );
|
||||
free( ret );
|
||||
return NULL;
|
||||
}
|
||||
for (address = list; address; address = address->Next)
|
||||
|
@ -2968,9 +2968,9 @@ static struct array *get_ipsubnet( IP_ADAPTER_UNICAST_ADDRESS_LH *list )
|
|||
}
|
||||
if (!ptr[i++])
|
||||
{
|
||||
for (; i > 0; i--) heap_free( ptr[i - 1] );
|
||||
heap_free( ptr );
|
||||
heap_free( ret );
|
||||
for (; i > 0; i--) free( ptr[i - 1] );
|
||||
free( ptr );
|
||||
free( ret );
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
@ -2998,10 +2998,10 @@ static enum fill_status fill_networkadapterconfig( struct table *table, const st
|
|||
ret = GetAdaptersAddresses( AF_UNSPEC, GAA_FLAG_INCLUDE_ALL_GATEWAYS, NULL, NULL, &size );
|
||||
if (ret != ERROR_BUFFER_OVERFLOW) return FILL_STATUS_FAILED;
|
||||
|
||||
if (!(buffer = heap_alloc( size ))) return FILL_STATUS_FAILED;
|
||||
if (!(buffer = malloc( size ))) return FILL_STATUS_FAILED;
|
||||
if (GetAdaptersAddresses( AF_UNSPEC, GAA_FLAG_INCLUDE_ALL_GATEWAYS, NULL, buffer, &size ))
|
||||
{
|
||||
heap_free( buffer );
|
||||
free( buffer );
|
||||
return FILL_STATUS_FAILED;
|
||||
}
|
||||
for (aa = buffer; aa; aa = aa->Next)
|
||||
|
@ -3010,7 +3010,7 @@ static enum fill_status fill_networkadapterconfig( struct table *table, const st
|
|||
}
|
||||
if (!resize_table( table, count, sizeof(*rec) ))
|
||||
{
|
||||
heap_free( buffer );
|
||||
free( buffer );
|
||||
return FILL_STATUS_FAILED;
|
||||
}
|
||||
for (aa = buffer; aa; aa = aa->Next)
|
||||
|
@ -3042,7 +3042,7 @@ static enum fill_status fill_networkadapterconfig( struct table *table, const st
|
|||
TRACE("created %u rows\n", row);
|
||||
table->num_rows = row;
|
||||
|
||||
heap_free( buffer );
|
||||
free( buffer );
|
||||
return status;
|
||||
}
|
||||
|
||||
|
@ -3132,15 +3132,15 @@ static enum fill_status fill_printer( struct table *table, const struct expr *co
|
|||
EnumPrintersW( PRINTER_ENUM_LOCAL, NULL, 2, NULL, 0, &size, &count );
|
||||
if (!count) return FILL_STATUS_UNFILTERED;
|
||||
|
||||
if (!(info = heap_alloc( size ))) return FILL_STATUS_FAILED;
|
||||
if (!(info = malloc( size ))) return FILL_STATUS_FAILED;
|
||||
if (!EnumPrintersW( PRINTER_ENUM_LOCAL, NULL, 2, (BYTE *)info, size, &size, &count ))
|
||||
{
|
||||
heap_free( info );
|
||||
free( info );
|
||||
return FILL_STATUS_FAILED;
|
||||
}
|
||||
if (!resize_table( table, count, sizeof(*rec) ))
|
||||
{
|
||||
heap_free( info );
|
||||
free( info );
|
||||
return FILL_STATUS_FAILED;
|
||||
}
|
||||
|
||||
|
@ -3168,7 +3168,7 @@ static enum fill_status fill_printer( struct table *table, const struct expr *co
|
|||
TRACE("created %u rows\n", num_rows);
|
||||
table->num_rows = num_rows;
|
||||
|
||||
heap_free( info );
|
||||
free( info );
|
||||
return status;
|
||||
}
|
||||
|
||||
|
@ -3345,11 +3345,11 @@ static UINT get_processor_currentclockspeed( UINT index )
|
|||
UINT ret = 1000, size = get_processor_count() * sizeof(PROCESSOR_POWER_INFORMATION);
|
||||
NTSTATUS status;
|
||||
|
||||
if ((info = heap_alloc( size )))
|
||||
if ((info = malloc( size )))
|
||||
{
|
||||
status = NtPowerInformation( ProcessorInformation, NULL, 0, info, size );
|
||||
if (!status) ret = info[index].CurrentMhz;
|
||||
heap_free( info );
|
||||
free( info );
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
@ -3359,11 +3359,11 @@ static UINT get_processor_maxclockspeed( UINT index )
|
|||
UINT ret = 1000, size = get_processor_count() * sizeof(PROCESSOR_POWER_INFORMATION);
|
||||
NTSTATUS status;
|
||||
|
||||
if ((info = heap_alloc( size )))
|
||||
if ((info = malloc( size )))
|
||||
{
|
||||
status = NtPowerInformation( ProcessorInformation, NULL, 0, info, size );
|
||||
if (!status) ret = info[index].MaxMhz;
|
||||
heap_free( info );
|
||||
free( info );
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
@ -3429,7 +3429,7 @@ static WCHAR *get_lastbootuptime(void)
|
|||
TIME_FIELDS tf;
|
||||
WCHAR *ret;
|
||||
|
||||
if (!(ret = heap_alloc( 26 * sizeof(WCHAR) ))) return NULL;
|
||||
if (!(ret = malloc( 26 * sizeof(WCHAR) ))) return NULL;
|
||||
|
||||
NtQuerySystemInformation( SystemTimeOfDayInformation, &ti, sizeof(ti), NULL );
|
||||
RtlTimeToTimeFields( &ti.BootTime, &tf );
|
||||
|
@ -3453,7 +3453,7 @@ static WCHAR *get_localdatetime(void)
|
|||
Bias+= tzi.DaylightBias;
|
||||
else
|
||||
Bias+= tzi.StandardBias;
|
||||
if (!(ret = heap_alloc( 26 * sizeof(WCHAR) ))) return NULL;
|
||||
if (!(ret = malloc( 26 * sizeof(WCHAR) ))) return NULL;
|
||||
|
||||
GetLocalTime(&st);
|
||||
swprintf( ret, 26, L"%04u%02u%02u%02u%02u%02u.%06u%+03d", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute,
|
||||
|
@ -3465,7 +3465,7 @@ static WCHAR *get_systemdirectory(void)
|
|||
void *redir;
|
||||
WCHAR *ret;
|
||||
|
||||
if (!(ret = heap_alloc( MAX_PATH * sizeof(WCHAR) ))) return NULL;
|
||||
if (!(ret = malloc( MAX_PATH * sizeof(WCHAR) ))) return NULL;
|
||||
Wow64DisableWow64FsRedirection( &redir );
|
||||
GetSystemDirectoryW( ret, MAX_PATH );
|
||||
Wow64RevertWow64FsRedirection( redir );
|
||||
|
@ -3473,32 +3473,32 @@ static WCHAR *get_systemdirectory(void)
|
|||
}
|
||||
static WCHAR *get_systemdrive(void)
|
||||
{
|
||||
WCHAR *ret = heap_alloc( 3 * sizeof(WCHAR) ); /* "c:" */
|
||||
WCHAR *ret = malloc( 3 * sizeof(WCHAR) ); /* "c:" */
|
||||
if (ret && GetEnvironmentVariableW( L"SystemDrive", ret, 3 )) return ret;
|
||||
heap_free( ret );
|
||||
free( ret );
|
||||
return NULL;
|
||||
}
|
||||
static WCHAR *get_codeset(void)
|
||||
{
|
||||
WCHAR *ret = heap_alloc( 11 * sizeof(WCHAR) );
|
||||
WCHAR *ret = malloc( 11 * sizeof(WCHAR) );
|
||||
if (ret) swprintf( ret, 11, L"%u", GetACP() );
|
||||
return ret;
|
||||
}
|
||||
static WCHAR *get_countrycode(void)
|
||||
{
|
||||
WCHAR *ret = heap_alloc( 6 * sizeof(WCHAR) );
|
||||
WCHAR *ret = malloc( 6 * sizeof(WCHAR) );
|
||||
if (ret) GetLocaleInfoW( LOCALE_SYSTEM_DEFAULT, LOCALE_ICOUNTRY, ret, 6 );
|
||||
return ret;
|
||||
}
|
||||
static WCHAR *get_locale(void)
|
||||
{
|
||||
WCHAR *ret = heap_alloc( 5 * sizeof(WCHAR) );
|
||||
WCHAR *ret = malloc( 5 * sizeof(WCHAR) );
|
||||
if (ret) GetLocaleInfoW( LOCALE_SYSTEM_DEFAULT, LOCALE_ILANGUAGE, ret, 5 );
|
||||
return ret;
|
||||
}
|
||||
static WCHAR *get_osbuildnumber( OSVERSIONINFOEXW *ver )
|
||||
{
|
||||
WCHAR *ret = heap_alloc( 11 * sizeof(WCHAR) );
|
||||
WCHAR *ret = malloc( 11 * sizeof(WCHAR) );
|
||||
if (ret) swprintf( ret, 11, L"%u", ver->dwBuildNumber );
|
||||
return ret;
|
||||
}
|
||||
|
@ -3519,7 +3519,7 @@ static WCHAR *get_oscaption( OSVERSIONINFOEXW *ver )
|
|||
int len = ARRAY_SIZE( windowsW ) - 1;
|
||||
WCHAR *ret;
|
||||
|
||||
if (!(ret = heap_alloc( len * sizeof(WCHAR) + sizeof(win2003W) ))) return NULL;
|
||||
if (!(ret = malloc( len * sizeof(WCHAR) + sizeof(win2003W) ))) return NULL;
|
||||
memcpy( ret, windowsW, sizeof(windowsW) );
|
||||
if (ver->dwMajorVersion == 10 && ver->dwMinorVersion == 0) memcpy( ret + len, win10W, sizeof(win10W) );
|
||||
else if (ver->dwMajorVersion == 6 && ver->dwMinorVersion == 3) memcpy( ret + len, win81W, sizeof(win81W) );
|
||||
|
@ -3549,7 +3549,7 @@ static WCHAR *get_osname( const WCHAR *caption )
|
|||
int len = lstrlenW( caption );
|
||||
WCHAR *ret;
|
||||
|
||||
if (!(ret = heap_alloc( len * sizeof(WCHAR) + sizeof(partitionW) ))) return NULL;
|
||||
if (!(ret = malloc( len * sizeof(WCHAR) + sizeof(partitionW) ))) return NULL;
|
||||
memcpy( ret, caption, len * sizeof(WCHAR) );
|
||||
memcpy( ret + len, partitionW, sizeof(partitionW) );
|
||||
return ret;
|
||||
|
@ -3562,12 +3562,12 @@ static WCHAR *get_osserialnumber(void)
|
|||
|
||||
if (!RegOpenKeyExW( HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\Windows NT\\CurrentVersion", 0, KEY_READ, &hkey ) &&
|
||||
!RegQueryValueExW( hkey, L"ProductId", NULL, &type, NULL, &size ) && type == REG_SZ &&
|
||||
(ret = heap_alloc( size + sizeof(WCHAR) )))
|
||||
(ret = malloc( size + sizeof(WCHAR) )))
|
||||
{
|
||||
size += sizeof(WCHAR);
|
||||
if (RegQueryValueExW( hkey, L"ProductId", NULL, NULL, (BYTE *)ret, &size ))
|
||||
{
|
||||
heap_free( ret );
|
||||
free( ret );
|
||||
ret = NULL;
|
||||
}
|
||||
}
|
||||
|
@ -3577,7 +3577,7 @@ static WCHAR *get_osserialnumber(void)
|
|||
}
|
||||
static WCHAR *get_osversion( OSVERSIONINFOEXW *ver )
|
||||
{
|
||||
WCHAR *ret = heap_alloc( 33 * sizeof(WCHAR) );
|
||||
WCHAR *ret = malloc( 33 * sizeof(WCHAR) );
|
||||
if (ret) swprintf( ret, 33, L"%u.%u.%u", ver->dwMajorVersion, ver->dwMinorVersion, ver->dwBuildNumber );
|
||||
return ret;
|
||||
}
|
||||
|
@ -3693,9 +3693,9 @@ static QUERY_SERVICE_CONFIGW *query_service_config( SC_HANDLE manager, const WCH
|
|||
if (!(service = OpenServiceW( manager, name, SERVICE_QUERY_CONFIG ))) return NULL;
|
||||
QueryServiceConfigW( service, NULL, 0, &size );
|
||||
if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) goto done;
|
||||
if (!(config = heap_alloc( size ))) goto done;
|
||||
if (!(config = malloc( size ))) goto done;
|
||||
if (QueryServiceConfigW( service, config, size, &size )) goto done;
|
||||
heap_free( config );
|
||||
free( config );
|
||||
config = NULL;
|
||||
|
||||
done:
|
||||
|
@ -3716,7 +3716,7 @@ static enum fill_status fill_service( struct table *table, const struct expr *co
|
|||
BOOL ret;
|
||||
|
||||
if (!(manager = OpenSCManagerW( NULL, NULL, SC_MANAGER_ENUMERATE_SERVICE ))) return FILL_STATUS_FAILED;
|
||||
if (!(services = heap_alloc( size ))) goto done;
|
||||
if (!(services = malloc( size ))) goto done;
|
||||
|
||||
ret = EnumServicesStatusExW( manager, SC_ENUM_PROCESS_INFO, SERVICE_TYPE_ALL,
|
||||
SERVICE_STATE_ALL, (BYTE *)services, size, &needed,
|
||||
|
@ -3725,7 +3725,7 @@ static enum fill_status fill_service( struct table *table, const struct expr *co
|
|||
{
|
||||
if (GetLastError() != ERROR_MORE_DATA) goto done;
|
||||
size = needed;
|
||||
if (!(tmp = heap_realloc( services, size ))) goto done;
|
||||
if (!(tmp = realloc( services, size ))) goto done;
|
||||
services = tmp;
|
||||
ret = EnumServicesStatusExW( manager, SC_ENUM_PROCESS_INFO, SERVICE_TYPE_ALL,
|
||||
SERVICE_STATE_ALL, (BYTE *)services, size, &needed,
|
||||
|
@ -3758,7 +3758,7 @@ static enum fill_status fill_service( struct table *table, const struct expr *co
|
|||
rec->resume_service = service_resume_service;
|
||||
rec->start_service = service_start_service;
|
||||
rec->stop_service = service_stop_service;
|
||||
heap_free( config );
|
||||
free( config );
|
||||
if (!match_row( table, row, cond, &fill_status ))
|
||||
{
|
||||
free_row_values( table, row );
|
||||
|
@ -3773,7 +3773,7 @@ static enum fill_status fill_service( struct table *table, const struct expr *co
|
|||
|
||||
done:
|
||||
CloseServiceHandle( manager );
|
||||
heap_free( services );
|
||||
free( services );
|
||||
return fill_status;
|
||||
}
|
||||
|
||||
|
@ -3787,10 +3787,10 @@ static struct array *get_binaryrepresentation( PSID sid, UINT len )
|
|||
struct array *ret;
|
||||
UINT8 *ptr;
|
||||
|
||||
if (!(ret = heap_alloc( sizeof(*ret) ))) return NULL;
|
||||
if (!(ptr = heap_alloc( len )))
|
||||
if (!(ret = malloc( sizeof(*ret) ))) return NULL;
|
||||
if (!(ptr = malloc( len )))
|
||||
{
|
||||
heap_free( ret );
|
||||
free( ret );
|
||||
return NULL;
|
||||
}
|
||||
memcpy( ptr, sid, len );
|
||||
|
@ -3906,10 +3906,10 @@ static int get_systemenclosure_lockpresent( const char *buf, UINT len )
|
|||
static struct array *dup_array( const struct array *src )
|
||||
{
|
||||
struct array *dst;
|
||||
if (!(dst = heap_alloc( sizeof(*dst) ))) return NULL;
|
||||
if (!(dst->ptr = heap_alloc( src->count * src->elem_size )))
|
||||
if (!(dst = malloc( sizeof(*dst) ))) return NULL;
|
||||
if (!(dst->ptr = malloc( src->count * src->elem_size )))
|
||||
{
|
||||
heap_free( dst );
|
||||
free( dst );
|
||||
return NULL;
|
||||
}
|
||||
memcpy( dst->ptr, src->ptr, src->count * src->elem_size );
|
||||
|
@ -3928,10 +3928,10 @@ static struct array *get_systemenclosure_chassistypes( const char *buf, UINT len
|
|||
if (!(hdr = find_smbios_entry( SMBIOS_TYPE_CHASSIS, buf, len )) || hdr->length < sizeof(*chassis)) goto done;
|
||||
chassis = (const struct smbios_chassis *)hdr;
|
||||
|
||||
if (!(ret = heap_alloc( sizeof(*ret) ))) goto done;
|
||||
if (!(types = heap_alloc( sizeof(*types) )))
|
||||
if (!(ret = malloc( sizeof(*ret) ))) goto done;
|
||||
if (!(types = malloc( sizeof(*types) )))
|
||||
{
|
||||
heap_free( ret );
|
||||
free( ret );
|
||||
return NULL;
|
||||
}
|
||||
types[0] = chassis->type & ~0x80;
|
||||
|
@ -3955,7 +3955,7 @@ static enum fill_status fill_systemenclosure( struct table *table, const struct
|
|||
if (!resize_table( table, 1, sizeof(*rec) )) return FILL_STATUS_FAILED;
|
||||
|
||||
len = GetSystemFirmwareTable( RSMB, 0, NULL, 0 );
|
||||
if (!(buf = heap_alloc( len ))) return FILL_STATUS_FAILED;
|
||||
if (!(buf = malloc( len ))) return FILL_STATUS_FAILED;
|
||||
GetSystemFirmwareTable( RSMB, 0, buf, len );
|
||||
|
||||
rec = (struct record_systemenclosure *)table->data;
|
||||
|
@ -3969,7 +3969,7 @@ static enum fill_status fill_systemenclosure( struct table *table, const struct
|
|||
if (!match_row( table, row, cond, &status )) free_row_values( table, row );
|
||||
else row++;
|
||||
|
||||
heap_free( buf );
|
||||
free( buf );
|
||||
|
||||
TRACE("created %u rows\n", row);
|
||||
table->num_rows = row;
|
||||
|
@ -3982,7 +3982,7 @@ static WCHAR *get_videocontroller_pnpdeviceid( DXGI_ADAPTER_DESC *desc )
|
|||
UINT len = sizeof(fmtW) + 2;
|
||||
WCHAR *ret;
|
||||
|
||||
if (!(ret = heap_alloc( len * sizeof(WCHAR) ))) return NULL;
|
||||
if (!(ret = malloc( len * sizeof(WCHAR) ))) return NULL;
|
||||
swprintf( ret, len, fmtW, desc->VendorId, desc->DeviceId, desc->SubSysId, desc->Revision );
|
||||
return ret;
|
||||
}
|
||||
|
@ -4082,7 +4082,7 @@ static WCHAR *get_sounddevice_pnpdeviceid( DXGI_ADAPTER_DESC *desc )
|
|||
UINT len = sizeof(fmtW) + 2;
|
||||
WCHAR *ret;
|
||||
|
||||
if (!(ret = heap_alloc( len * sizeof(WCHAR) ))) return NULL;
|
||||
if (!(ret = malloc( len * sizeof(WCHAR) ))) return NULL;
|
||||
swprintf( ret, len, fmtW, desc->VendorId, desc->DeviceId, desc->SubSysId, desc->Revision );
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -61,7 +61,7 @@ static ULONG WINAPI enum_class_object_Release(
|
|||
{
|
||||
TRACE("destroying %p\n", ec);
|
||||
release_query( ec->query );
|
||||
heap_free( ec );
|
||||
free( ec );
|
||||
}
|
||||
return refs;
|
||||
}
|
||||
|
@ -205,8 +205,7 @@ HRESULT EnumWbemClassObject_create( struct query *query, LPVOID *ppObj )
|
|||
|
||||
TRACE("%p\n", ppObj);
|
||||
|
||||
ec = heap_alloc( sizeof(*ec) );
|
||||
if (!ec) return E_OUTOFMEMORY;
|
||||
if (!(ec = malloc( sizeof(*ec) ))) return E_OUTOFMEMORY;
|
||||
|
||||
ec->IEnumWbemClassObject_iface.lpVtbl = &enum_class_object_vtbl;
|
||||
ec->refs = 1;
|
||||
|
@ -225,10 +224,10 @@ static struct record *create_record( struct table *table )
|
|||
UINT i;
|
||||
struct record *record;
|
||||
|
||||
if (!(record = heap_alloc( sizeof(struct record) ))) return NULL;
|
||||
if (!(record->fields = heap_alloc( table->num_cols * sizeof(struct field) )))
|
||||
if (!(record = malloc( sizeof(struct record) ))) return NULL;
|
||||
if (!(record->fields = malloc( table->num_cols * sizeof(struct field) )))
|
||||
{
|
||||
heap_free( record );
|
||||
free( record );
|
||||
return NULL;
|
||||
}
|
||||
for (i = 0; i < table->num_cols; i++)
|
||||
|
@ -247,10 +246,10 @@ void destroy_array( struct array *array, CIMTYPE type )
|
|||
if (!array) return;
|
||||
if (type == CIM_STRING || type == CIM_DATETIME || type == CIM_REFERENCE)
|
||||
{
|
||||
for (i = 0; i < array->count; i++) heap_free( *(WCHAR **)((char *)array->ptr + i * array->elem_size) );
|
||||
for (i = 0; i < array->count; i++) free( *(WCHAR **)((char *)array->ptr + i * array->elem_size) );
|
||||
}
|
||||
heap_free( array->ptr );
|
||||
heap_free( array );
|
||||
free( array->ptr );
|
||||
free( array );
|
||||
}
|
||||
|
||||
static void destroy_record( struct record *record )
|
||||
|
@ -263,12 +262,12 @@ static void destroy_record( struct record *record )
|
|||
{
|
||||
if (record->fields[i].type == CIM_STRING ||
|
||||
record->fields[i].type == CIM_DATETIME ||
|
||||
record->fields[i].type == CIM_REFERENCE) heap_free( record->fields[i].u.sval );
|
||||
record->fields[i].type == CIM_REFERENCE) free( record->fields[i].u.sval );
|
||||
else if (record->fields[i].type & CIM_FLAG_ARRAY)
|
||||
destroy_array( record->fields[i].u.aval, record->fields[i].type & CIM_TYPE_MASK );
|
||||
}
|
||||
heap_free( record->fields );
|
||||
heap_free( record );
|
||||
free( record->fields );
|
||||
free( record );
|
||||
}
|
||||
|
||||
struct class_object
|
||||
|
@ -307,8 +306,8 @@ static ULONG WINAPI class_object_Release(
|
|||
TRACE("destroying %p\n", co);
|
||||
if (co->iter) IEnumWbemClassObject_Release( co->iter );
|
||||
destroy_record( co->record );
|
||||
heap_free( co->name );
|
||||
heap_free( co );
|
||||
free( co->name );
|
||||
free( co );
|
||||
}
|
||||
return refs;
|
||||
}
|
||||
|
@ -774,8 +773,8 @@ static HRESULT create_signature_columns_and_data( IEnumWbemClassObject *iter, UI
|
|||
int i = 0;
|
||||
|
||||
count = count_instances( iter );
|
||||
if (!(columns = heap_alloc( count * sizeof(struct column) ))) return E_OUTOFMEMORY;
|
||||
if (!(row = heap_alloc_zero( count * sizeof(LONGLONG) ))) goto error;
|
||||
if (!(columns = malloc( count * sizeof(struct column) ))) return E_OUTOFMEMORY;
|
||||
if (!(row = calloc( count, sizeof(LONGLONG) ))) goto error;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
|
@ -805,9 +804,9 @@ static HRESULT create_signature_columns_and_data( IEnumWbemClassObject *iter, UI
|
|||
return S_OK;
|
||||
|
||||
error:
|
||||
for (; i >= 0; i--) heap_free( (WCHAR *)columns[i].name );
|
||||
heap_free( columns );
|
||||
heap_free( row );
|
||||
for (; i >= 0; i--) free( (WCHAR *)columns[i].name );
|
||||
free( columns );
|
||||
free( row );
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
@ -825,7 +824,7 @@ static HRESULT create_signature_table( IEnumWbemClassObject *iter, enum wbm_name
|
|||
if (!(table = create_table( name, num_cols, columns, 1, 1, row, NULL )))
|
||||
{
|
||||
free_columns( columns, num_cols );
|
||||
heap_free( row );
|
||||
free( row );
|
||||
return E_OUTOFMEMORY;
|
||||
}
|
||||
if (!add_table( ns, table )) free_table( table ); /* already exists */
|
||||
|
@ -837,7 +836,7 @@ static WCHAR *build_signature_table_name( const WCHAR *class, const WCHAR *metho
|
|||
UINT len = ARRAY_SIZE(L"__%s_%s_%s") + ARRAY_SIZE(L"OUT") + lstrlenW( class ) + lstrlenW( method );
|
||||
WCHAR *ret;
|
||||
|
||||
if (!(ret = heap_alloc( len * sizeof(WCHAR) ))) return NULL;
|
||||
if (!(ret = malloc( len * sizeof(WCHAR) ))) return NULL;
|
||||
swprintf( ret, len, L"__%s_%s_%s", class, method, dir == PARAM_IN ? L"IN" : L"OUT" );
|
||||
return wcsupr( ret );
|
||||
}
|
||||
|
@ -852,11 +851,11 @@ HRESULT create_signature( enum wbm_namespace ns, const WCHAR *class, const WCHAR
|
|||
HRESULT hr;
|
||||
|
||||
len += lstrlenW( class ) + lstrlenW( method );
|
||||
if (!(query = heap_alloc( len * sizeof(WCHAR) ))) return E_OUTOFMEMORY;
|
||||
if (!(query = malloc( len * sizeof(WCHAR) ))) return E_OUTOFMEMORY;
|
||||
swprintf( query, len, selectW, class, method, dir >= 0 ? L">=0" : L"<=0" );
|
||||
|
||||
hr = exec_query( ns, query, &iter );
|
||||
heap_free( query );
|
||||
free( query );
|
||||
if (hr != S_OK) return hr;
|
||||
|
||||
if (!count_instances( iter ))
|
||||
|
@ -876,7 +875,7 @@ HRESULT create_signature( enum wbm_namespace ns, const WCHAR *class, const WCHAR
|
|||
if (hr == S_OK)
|
||||
hr = get_object( ns, name, sig );
|
||||
|
||||
heap_free( name );
|
||||
free( name );
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
@ -1064,15 +1063,14 @@ HRESULT create_class_object( enum wbm_namespace ns, const WCHAR *name, IEnumWbem
|
|||
|
||||
TRACE("%s, %p\n", debugstr_w(name), obj);
|
||||
|
||||
co = heap_alloc( sizeof(*co) );
|
||||
if (!co) return E_OUTOFMEMORY;
|
||||
if (!(co = malloc( sizeof(*co) ))) return E_OUTOFMEMORY;
|
||||
|
||||
co->IWbemClassObject_iface.lpVtbl = &class_object_vtbl;
|
||||
co->refs = 1;
|
||||
if (!name) co->name = NULL;
|
||||
else if (!(co->name = heap_strdupW( name )))
|
||||
{
|
||||
heap_free( co );
|
||||
free( co );
|
||||
return E_OUTOFMEMORY;
|
||||
}
|
||||
co->iter = iter;
|
||||
|
|
|
@ -60,9 +60,9 @@ static ULONG WINAPI qualifier_set_Release(
|
|||
if (!refs)
|
||||
{
|
||||
TRACE("destroying %p\n", set);
|
||||
heap_free( set->class );
|
||||
heap_free( set->member );
|
||||
heap_free( set );
|
||||
free( set->class );
|
||||
free( set->member );
|
||||
free( set );
|
||||
}
|
||||
return refs;
|
||||
}
|
||||
|
@ -103,24 +103,24 @@ static HRESULT create_qualifier_enum( enum wbm_namespace ns, const WCHAR *class,
|
|||
if (member && name)
|
||||
{
|
||||
len = lstrlenW( class ) + lstrlenW( member ) + lstrlenW( name ) + ARRAY_SIZE(fmtW);
|
||||
if (!(query = heap_alloc( len * sizeof(WCHAR) ))) return E_OUTOFMEMORY;
|
||||
if (!(query = malloc( len * sizeof(WCHAR) ))) return E_OUTOFMEMORY;
|
||||
swprintf( query, len, fmtW, class, member, name );
|
||||
}
|
||||
else if (member)
|
||||
{
|
||||
len = lstrlenW( class ) + lstrlenW( member ) + ARRAY_SIZE(fmt2W);
|
||||
if (!(query = heap_alloc( len * sizeof(WCHAR) ))) return E_OUTOFMEMORY;
|
||||
if (!(query = malloc( len * sizeof(WCHAR) ))) return E_OUTOFMEMORY;
|
||||
swprintf( query, len, fmt2W, class, member );
|
||||
}
|
||||
else
|
||||
{
|
||||
len = lstrlenW( class ) + ARRAY_SIZE(fmt3W);
|
||||
if (!(query = heap_alloc( len * sizeof(WCHAR) ))) return E_OUTOFMEMORY;
|
||||
if (!(query = malloc( len * sizeof(WCHAR) ))) return E_OUTOFMEMORY;
|
||||
swprintf( query, len, fmt3W, class );
|
||||
}
|
||||
|
||||
hr = exec_query( ns, query, iter );
|
||||
heap_free( query );
|
||||
free( query );
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
@ -279,19 +279,19 @@ HRESULT WbemQualifierSet_create( enum wbm_namespace ns, const WCHAR *class, cons
|
|||
|
||||
TRACE("%p\n", ppObj);
|
||||
|
||||
if (!(set = heap_alloc( sizeof(*set) ))) return E_OUTOFMEMORY;
|
||||
if (!(set = malloc( sizeof(*set) ))) return E_OUTOFMEMORY;
|
||||
|
||||
set->IWbemQualifierSet_iface.lpVtbl = &qualifier_set_vtbl;
|
||||
if (!(set->class = heap_strdupW( class )))
|
||||
{
|
||||
heap_free( set );
|
||||
free( set );
|
||||
return E_OUTOFMEMORY;
|
||||
}
|
||||
if (!member) set->member = NULL;
|
||||
else if (!(set->member = heap_strdupW( member )))
|
||||
{
|
||||
heap_free( set->class );
|
||||
heap_free( set );
|
||||
free( set->class );
|
||||
free( set );
|
||||
return E_OUTOFMEMORY;
|
||||
}
|
||||
set->ns = ns;
|
||||
|
|
|
@ -32,7 +32,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(wbemprox);
|
|||
static HRESULT append_table( struct view *view, struct table *table )
|
||||
{
|
||||
struct table **tmp;
|
||||
if (!(tmp = heap_realloc( view->table, (view->table_count + 1) * sizeof(*tmp) ))) return E_OUTOFMEMORY;
|
||||
if (!(tmp = realloc( view->table, (view->table_count + 1) * sizeof(*tmp) ))) return E_OUTOFMEMORY;
|
||||
view->table = tmp;
|
||||
view->table[view->table_count++] = table;
|
||||
return S_OK;
|
||||
|
@ -41,7 +41,7 @@ static HRESULT append_table( struct view *view, struct table *table )
|
|||
HRESULT create_view( enum view_type type, enum wbm_namespace ns, const WCHAR *path, const struct keyword *keywordlist,
|
||||
const WCHAR *class, const struct property *proplist, const struct expr *cond, struct view **ret )
|
||||
{
|
||||
struct view *view = heap_alloc_zero( sizeof(*view) );
|
||||
struct view *view = calloc( 1, sizeof(*view) );
|
||||
|
||||
if (!view) return E_OUTOFMEMORY;
|
||||
|
||||
|
@ -59,7 +59,7 @@ HRESULT create_view( enum view_type type, enum wbm_namespace ns, const WCHAR *pa
|
|||
|
||||
if (table && (hr = append_table( view, table )) != S_OK)
|
||||
{
|
||||
heap_free( view );
|
||||
free( view );
|
||||
return hr;
|
||||
}
|
||||
else if (!table && ns == WBEMPROX_NAMESPACE_LAST) return WBEM_E_INVALID_CLASS;
|
||||
|
@ -69,7 +69,7 @@ HRESULT create_view( enum view_type type, enum wbm_namespace ns, const WCHAR *pa
|
|||
}
|
||||
default:
|
||||
ERR( "unhandled type %u\n", type );
|
||||
heap_free( view );
|
||||
free( view );
|
||||
return E_INVALIDARG;
|
||||
}
|
||||
|
||||
|
@ -84,9 +84,9 @@ void destroy_view( struct view *view )
|
|||
ULONG i;
|
||||
if (!view) return;
|
||||
for (i = 0; i < view->table_count; i++) release_table( view->table[i] );
|
||||
heap_free( view->table );
|
||||
heap_free( view->result );
|
||||
heap_free( view );
|
||||
free( view->table );
|
||||
free( view->result );
|
||||
free( view );
|
||||
}
|
||||
|
||||
static BOOL eval_like( const WCHAR *lstr, const WCHAR *rstr )
|
||||
|
@ -477,7 +477,7 @@ static WCHAR *build_assoc_query( const WCHAR *class, UINT class_len )
|
|||
UINT len = class_len + ARRAY_SIZE(fmtW);
|
||||
WCHAR *ret;
|
||||
|
||||
if (!(ret = heap_alloc( len * sizeof(WCHAR) ))) return NULL;
|
||||
if (!(ret = malloc( len * sizeof(WCHAR) ))) return NULL;
|
||||
swprintf( ret, len, fmtW, class );
|
||||
return ret;
|
||||
}
|
||||
|
@ -490,7 +490,7 @@ static HRESULT create_assoc_enum( enum wbm_namespace ns, const WCHAR *class, UIN
|
|||
|
||||
if (!(query = build_assoc_query( class, class_len ))) return E_OUTOFMEMORY;
|
||||
hr = exec_query( ns, query, iter );
|
||||
heap_free( query );
|
||||
free( query );
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
@ -500,7 +500,7 @@ static WCHAR *build_antecedent_query( const WCHAR *assocclass, const WCHAR *depe
|
|||
UINT len = lstrlenW(assocclass) + lstrlenW(dependent) + ARRAY_SIZE(fmtW);
|
||||
WCHAR *ret;
|
||||
|
||||
if (!(ret = heap_alloc( len * sizeof(WCHAR) ))) return NULL;
|
||||
if (!(ret = malloc( len * sizeof(WCHAR) ))) return NULL;
|
||||
swprintf( ret, len, fmtW, assocclass, dependent );
|
||||
return ret;
|
||||
}
|
||||
|
@ -534,7 +534,7 @@ static WCHAR *build_canonical_path( const WCHAR *relpath )
|
|||
}
|
||||
|
||||
len = ARRAY_SIZE( L"\\\\%s\\%s:" ) + SysStringLen( server ) + SysStringLen( namespace ) + lstrlenW( relpath );
|
||||
if ((ret = heap_alloc( len * sizeof(WCHAR ) )))
|
||||
if ((ret = malloc( len * sizeof(WCHAR ) )))
|
||||
{
|
||||
len = swprintf( ret, len, L"\\\\%s\\%s:", server, namespace );
|
||||
for (i = 0; i < lstrlenW( relpath ); i ++)
|
||||
|
@ -577,8 +577,8 @@ static HRESULT get_antecedent( enum wbm_namespace ns, const WCHAR *assocclass, c
|
|||
|
||||
done:
|
||||
if (iter) IEnumWbemClassObject_Release( iter );
|
||||
heap_free( str );
|
||||
heap_free( fullpath );
|
||||
free( str );
|
||||
free( fullpath );
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
@ -627,7 +627,7 @@ done:
|
|||
if (query) release_query( query );
|
||||
free_path( path );
|
||||
SysFreeString( antecedent );
|
||||
heap_free( str );
|
||||
free( str );
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
@ -671,7 +671,7 @@ static HRESULT exec_assoc_view( struct view *view )
|
|||
|
||||
if (view->table_count)
|
||||
{
|
||||
if (!(view->result = heap_alloc_zero( view->table_count * sizeof(UINT) ))) hr = E_OUTOFMEMORY;
|
||||
if (!(view->result = calloc( view->table_count, sizeof(UINT) ))) hr = E_OUTOFMEMORY;
|
||||
else view->result_count = view->table_count;
|
||||
}
|
||||
|
||||
|
@ -699,7 +699,7 @@ static HRESULT exec_select_view( struct view *view )
|
|||
if (!table->num_rows) return S_OK;
|
||||
|
||||
len = min( table->num_rows, 16 );
|
||||
if (!(view->result = heap_alloc( len * sizeof(UINT) ))) return E_OUTOFMEMORY;
|
||||
if (!(view->result = malloc( len * sizeof(UINT) ))) return E_OUTOFMEMORY;
|
||||
|
||||
for (i = 0; i < table->num_rows; i++)
|
||||
{
|
||||
|
@ -711,7 +711,7 @@ static HRESULT exec_select_view( struct view *view )
|
|||
{
|
||||
UINT *tmp;
|
||||
len *= 2;
|
||||
if (!(tmp = heap_realloc( view->result, len * sizeof(UINT) ))) return E_OUTOFMEMORY;
|
||||
if (!(tmp = realloc( view->result, len * sizeof(UINT) ))) return E_OUTOFMEMORY;
|
||||
view->result = tmp;
|
||||
}
|
||||
if (status == FILL_STATUS_FILTERED) val = 1;
|
||||
|
@ -743,7 +743,7 @@ struct query *create_query( enum wbm_namespace ns )
|
|||
{
|
||||
struct query *query;
|
||||
|
||||
if (!(query = heap_alloc( sizeof(*query) ))) return NULL;
|
||||
if (!(query = malloc( sizeof(*query) ))) return NULL;
|
||||
list_init( &query->mem );
|
||||
query->ns = ns;
|
||||
query->refs = 1;
|
||||
|
@ -756,8 +756,8 @@ void free_query( struct query *query )
|
|||
|
||||
if (!query) return;
|
||||
destroy_view( query->view );
|
||||
LIST_FOR_EACH_SAFE( mem, next, &query->mem ) { heap_free( mem ); }
|
||||
heap_free( query );
|
||||
LIST_FOR_EACH_SAFE( mem, next, &query->mem ) { free( mem ); }
|
||||
free( query );
|
||||
}
|
||||
|
||||
struct query *addref_query( struct query *query )
|
||||
|
@ -811,7 +811,7 @@ static BSTR build_proplist( const struct table *table, UINT row, UINT count, UIN
|
|||
UINT i, j, offset;
|
||||
BSTR *values, ret = NULL;
|
||||
|
||||
if (!(values = heap_alloc( count * sizeof(BSTR) ))) return NULL;
|
||||
if (!(values = malloc( count * sizeof(BSTR) ))) return NULL;
|
||||
|
||||
*len = j = 0;
|
||||
for (i = 0; i < table->num_cols; i++)
|
||||
|
@ -839,7 +839,7 @@ static BSTR build_proplist( const struct table *table, UINT row, UINT count, UIN
|
|||
}
|
||||
}
|
||||
for (i = 0; i < count; i++) SysFreeString( values[i] );
|
||||
heap_free( values );
|
||||
free( values );
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -1278,13 +1278,13 @@ static struct array *to_array( VARIANT *var, CIMTYPE *type )
|
|||
if (SafeArrayGetVartype( V_ARRAY( var ), &vartype ) != S_OK) return NULL;
|
||||
if (!(basetype = to_cimtype( vartype ))) return NULL;
|
||||
if (SafeArrayGetUBound( V_ARRAY( var ), 1, &bound ) != S_OK) return NULL;
|
||||
if (!(ret = heap_alloc( sizeof(struct array) ))) return NULL;
|
||||
if (!(ret = malloc( sizeof(struct array) ))) return NULL;
|
||||
|
||||
ret->count = bound + 1;
|
||||
ret->elem_size = get_type_size( basetype );
|
||||
if (!(ret->ptr = heap_alloc_zero( ret->count * ret->elem_size )))
|
||||
if (!(ret->ptr = calloc( ret->count, ret->elem_size )))
|
||||
{
|
||||
heap_free( ret );
|
||||
free( ret );
|
||||
return NULL;
|
||||
}
|
||||
for (i = 0; i < ret->count; i++)
|
||||
|
|
|
@ -171,11 +171,11 @@ static HRESULT enum_key( HKEY root, const WCHAR *subkey, VARIANT *names, IWbemCo
|
|||
|
||||
TRACE("%p, %s\n", root, debugstr_w(subkey));
|
||||
|
||||
if (!(strings = heap_alloc( count * sizeof(BSTR) ))) return E_OUTOFMEMORY;
|
||||
if (!(strings = malloc( count * sizeof(BSTR) ))) return E_OUTOFMEMORY;
|
||||
if ((res = RegOpenKeyExW( root, subkey, 0, KEY_ENUMERATE_SUB_KEYS | reg_get_access_mask( context ), &hkey )))
|
||||
{
|
||||
set_variant( VT_UI4, res, NULL, retval );
|
||||
heap_free( strings );
|
||||
free( strings );
|
||||
return S_OK;
|
||||
}
|
||||
for (;;)
|
||||
|
@ -183,7 +183,7 @@ static HRESULT enum_key( HKEY root, const WCHAR *subkey, VARIANT *names, IWbemCo
|
|||
if (i >= count)
|
||||
{
|
||||
count *= 2;
|
||||
if (!(tmp = heap_realloc( strings, count * sizeof(BSTR) )))
|
||||
if (!(tmp = realloc( strings, count * sizeof(BSTR) )))
|
||||
{
|
||||
RegCloseKey( hkey );
|
||||
return E_OUTOFMEMORY;
|
||||
|
@ -211,7 +211,7 @@ static HRESULT enum_key( HKEY root, const WCHAR *subkey, VARIANT *names, IWbemCo
|
|||
}
|
||||
set_variant( VT_UI4, res, NULL, retval );
|
||||
RegCloseKey( hkey );
|
||||
heap_free( strings );
|
||||
free( strings );
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
@ -287,9 +287,9 @@ static HRESULT enum_values( HKEY root, const WCHAR *subkey, VARIANT *names, VARI
|
|||
goto done;
|
||||
|
||||
hr = E_OUTOFMEMORY;
|
||||
if (!(buf = heap_alloc( (buflen + 1) * sizeof(WCHAR) ))) goto done;
|
||||
if (!(value_names = heap_alloc( count * sizeof(BSTR) ))) goto done;
|
||||
if (!(value_types = heap_alloc( count * sizeof(DWORD) ))) goto done;
|
||||
if (!(buf = malloc( (buflen + 1) * sizeof(WCHAR) ))) goto done;
|
||||
if (!(value_names = malloc( count * sizeof(BSTR) ))) goto done;
|
||||
if (!(value_types = malloc( count * sizeof(DWORD) ))) goto done;
|
||||
|
||||
hr = S_OK;
|
||||
for (;;)
|
||||
|
@ -320,9 +320,9 @@ static HRESULT enum_values( HKEY root, const WCHAR *subkey, VARIANT *names, VARI
|
|||
done:
|
||||
set_variant( VT_UI4, res, NULL, retval );
|
||||
RegCloseKey( hkey );
|
||||
heap_free( value_names );
|
||||
heap_free( value_types );
|
||||
heap_free( buf );
|
||||
free( value_names );
|
||||
free( value_types );
|
||||
free( buf );
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
|
|
@ -168,7 +168,7 @@ static void free_async( struct async_header *async )
|
|||
if (async->sink) IWbemObjectSink_Release( async->sink );
|
||||
CloseHandle( async->cancel );
|
||||
CloseHandle( async->wait );
|
||||
heap_free( async );
|
||||
free( async );
|
||||
}
|
||||
|
||||
static BOOL init_async( struct async_header *async, IWbemObjectSink *sink,
|
||||
|
@ -247,7 +247,7 @@ static ULONG WINAPI wbem_services_Release(
|
|||
DeleteCriticalSection( &ws->cs );
|
||||
if (ws->context)
|
||||
IWbemContext_Release( ws->context );
|
||||
heap_free( ws );
|
||||
free( ws );
|
||||
}
|
||||
return refs;
|
||||
}
|
||||
|
@ -342,7 +342,7 @@ HRESULT parse_path( const WCHAR *str, struct path **ret )
|
|||
const WCHAR *p = str, *q;
|
||||
UINT len;
|
||||
|
||||
if (!(path = heap_alloc_zero( sizeof(*path) ))) return E_OUTOFMEMORY;
|
||||
if (!(path = calloc( 1, sizeof(*path) ))) return E_OUTOFMEMORY;
|
||||
|
||||
if (*p == '\\')
|
||||
{
|
||||
|
@ -353,7 +353,7 @@ HRESULT parse_path( const WCHAR *str, struct path **ret )
|
|||
p++;
|
||||
if (*p != '\\')
|
||||
{
|
||||
heap_free( path );
|
||||
free( path );
|
||||
return WBEM_E_INVALID_OBJECT_PATH;
|
||||
}
|
||||
p++;
|
||||
|
@ -362,14 +362,14 @@ HRESULT parse_path( const WCHAR *str, struct path **ret )
|
|||
while (*p && *p != '\\') p++;
|
||||
if (!*p)
|
||||
{
|
||||
heap_free( path );
|
||||
free( path );
|
||||
return WBEM_E_INVALID_OBJECT_PATH;
|
||||
}
|
||||
|
||||
len = p - q;
|
||||
if (!GetComputerNameW( server, &server_len ) || server_len != len || wcsnicmp( q, server, server_len ))
|
||||
{
|
||||
heap_free( path );
|
||||
free( path );
|
||||
return WBEM_E_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
|
@ -377,14 +377,14 @@ HRESULT parse_path( const WCHAR *str, struct path **ret )
|
|||
while (*p && *p != ':') p++;
|
||||
if (!*p)
|
||||
{
|
||||
heap_free( path );
|
||||
free( path );
|
||||
return WBEM_E_INVALID_OBJECT_PATH;
|
||||
}
|
||||
|
||||
len = p - q;
|
||||
if (len != ARRAY_SIZE(cimv2W) - 1 || wcsnicmp( q, cimv2W, ARRAY_SIZE(cimv2W) - 1 ))
|
||||
{
|
||||
heap_free( path );
|
||||
free( path );
|
||||
return WBEM_E_INVALID_NAMESPACE;
|
||||
}
|
||||
p++;
|
||||
|
@ -394,9 +394,9 @@ HRESULT parse_path( const WCHAR *str, struct path **ret )
|
|||
while (*p && *p != '.') p++;
|
||||
|
||||
len = p - q;
|
||||
if (!(path->class = heap_alloc( (len + 1) * sizeof(WCHAR) )))
|
||||
if (!(path->class = malloc( (len + 1) * sizeof(WCHAR) )))
|
||||
{
|
||||
heap_free( path );
|
||||
free( path );
|
||||
return E_OUTOFMEMORY;
|
||||
}
|
||||
memcpy( path->class, q, len * sizeof(WCHAR) );
|
||||
|
@ -409,10 +409,10 @@ HRESULT parse_path( const WCHAR *str, struct path **ret )
|
|||
while (*q) q++;
|
||||
|
||||
len = q - p;
|
||||
if (!(path->filter = heap_alloc( (len + 1) * sizeof(WCHAR) )))
|
||||
if (!(path->filter = malloc( (len + 1) * sizeof(WCHAR) )))
|
||||
{
|
||||
heap_free( path->class );
|
||||
heap_free( path );
|
||||
free( path->class );
|
||||
free( path );
|
||||
return E_OUTOFMEMORY;
|
||||
}
|
||||
memcpy( path->filter, p, len * sizeof(WCHAR) );
|
||||
|
@ -426,9 +426,9 @@ HRESULT parse_path( const WCHAR *str, struct path **ret )
|
|||
void free_path( struct path *path )
|
||||
{
|
||||
if (!path) return;
|
||||
heap_free( path->class );
|
||||
heap_free( path->filter );
|
||||
heap_free( path );
|
||||
free( path->class );
|
||||
free( path->filter );
|
||||
free( path );
|
||||
}
|
||||
|
||||
WCHAR *query_from_path( const struct path *path )
|
||||
|
@ -441,13 +441,13 @@ WCHAR *query_from_path( const struct path *path )
|
|||
if (path->filter)
|
||||
{
|
||||
len = path->class_len + path->filter_len + ARRAY_SIZE(selectW);
|
||||
if (!(query = heap_alloc( len * sizeof(WCHAR) ))) return NULL;
|
||||
if (!(query = malloc( len * sizeof(WCHAR) ))) return NULL;
|
||||
swprintf( query, len, selectW, path->class, path->filter );
|
||||
}
|
||||
else
|
||||
{
|
||||
len = path->class_len + ARRAY_SIZE(select_allW);
|
||||
if (!(query = heap_alloc( len * sizeof(WCHAR) ))) return NULL;
|
||||
if (!(query = malloc( len * sizeof(WCHAR) ))) return NULL;
|
||||
lstrcpyW( query, select_allW );
|
||||
lstrcatW( query, path->class );
|
||||
}
|
||||
|
@ -461,7 +461,7 @@ static HRESULT create_instance_enum( enum wbm_namespace ns, const struct path *p
|
|||
|
||||
if (!(query = query_from_path( path ))) return E_OUTOFMEMORY;
|
||||
hr = exec_query( ns, query, iter );
|
||||
heap_free( query );
|
||||
free( query );
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
@ -707,7 +707,7 @@ static void async_exec_query( struct async_header *hdr )
|
|||
IEnumWbemClassObject_Release( result );
|
||||
}
|
||||
IWbemObjectSink_SetStatus( query->hdr.sink, WBEM_STATUS_COMPLETE, hr, NULL, NULL );
|
||||
heap_free( query->str );
|
||||
free( query->str );
|
||||
}
|
||||
|
||||
static HRESULT WINAPI wbem_services_ExecQueryAsync(
|
||||
|
@ -740,7 +740,7 @@ static HRESULT WINAPI wbem_services_ExecQueryAsync(
|
|||
hr = WBEM_E_FAILED;
|
||||
goto done;
|
||||
}
|
||||
if (!(query = heap_alloc_zero( sizeof(*query) ))) goto done;
|
||||
if (!(query = calloc( 1, sizeof(*query) ))) goto done;
|
||||
query->ns = services->ns;
|
||||
async = (struct async_header *)query;
|
||||
|
||||
|
@ -758,7 +758,7 @@ static HRESULT WINAPI wbem_services_ExecQueryAsync(
|
|||
if (hr == S_OK) services->async = async;
|
||||
else
|
||||
{
|
||||
heap_free( query->str );
|
||||
free( query->str );
|
||||
free_async( async );
|
||||
}
|
||||
|
||||
|
@ -810,7 +810,7 @@ static HRESULT WINAPI wbem_services_ExecNotificationQueryAsync(
|
|||
hr = WBEM_E_FAILED;
|
||||
goto done;
|
||||
}
|
||||
if (!(query = heap_alloc_zero( sizeof(*query) ))) goto done;
|
||||
if (!(query = calloc( 1, sizeof(*query) ))) goto done;
|
||||
async = (struct async_header *)query;
|
||||
|
||||
if (!(init_async( async, sink, async_exec_query )))
|
||||
|
@ -827,7 +827,7 @@ static HRESULT WINAPI wbem_services_ExecNotificationQueryAsync(
|
|||
if (hr == S_OK) services->async = async;
|
||||
else
|
||||
{
|
||||
heap_free( query->str );
|
||||
free( query->str );
|
||||
free_async( async );
|
||||
}
|
||||
|
||||
|
@ -896,7 +896,7 @@ done:
|
|||
if (obj) IWbemClassObject_Release( obj );
|
||||
free_query( query );
|
||||
free_path( path );
|
||||
heap_free( str );
|
||||
free( str );
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
@ -955,8 +955,7 @@ HRESULT WbemServices_create( const WCHAR *namespace, IWbemContext *context, LPVO
|
|||
else if ((ns = get_namespace_from_string( namespace )) == WBEMPROX_NAMESPACE_LAST)
|
||||
return WBEM_E_INVALID_NAMESPACE;
|
||||
|
||||
ws = heap_alloc_zero( sizeof(*ws) );
|
||||
if (!ws) return E_OUTOFMEMORY;
|
||||
if (!(ws = calloc( 1, sizeof(*ws) ))) return E_OUTOFMEMORY;
|
||||
|
||||
ws->IWbemServices_iface.lpVtbl = &wbem_services_vtbl;
|
||||
ws->refs = 1;
|
||||
|
@ -994,8 +993,8 @@ static void wbem_context_delete_values(struct wbem_context *context)
|
|||
{
|
||||
list_remove( &value->entry );
|
||||
VariantClear( &value->value );
|
||||
heap_free( value->name );
|
||||
heap_free( value );
|
||||
free( value->name );
|
||||
free( value );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1043,7 +1042,7 @@ static ULONG WINAPI wbem_context_Release(
|
|||
{
|
||||
TRACE("destroying %p\n", context);
|
||||
wbem_context_delete_values( context );
|
||||
heap_free( context );
|
||||
free( context );
|
||||
}
|
||||
return refs;
|
||||
}
|
||||
|
@ -1152,16 +1151,16 @@ static HRESULT WINAPI wbem_context_SetValue(
|
|||
}
|
||||
else
|
||||
{
|
||||
if (!(value = heap_alloc_zero( sizeof(*value) ))) return E_OUTOFMEMORY;
|
||||
if (!(value = calloc( 1, sizeof(*value) ))) return E_OUTOFMEMORY;
|
||||
if (!(value->name = heap_strdupW( name )))
|
||||
{
|
||||
heap_free( value );
|
||||
free( value );
|
||||
return E_OUTOFMEMORY;
|
||||
}
|
||||
if (FAILED(hr = VariantCopy( &value->value, var )))
|
||||
{
|
||||
heap_free( value->name );
|
||||
heap_free( value );
|
||||
free( value->name );
|
||||
free( value );
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
@ -1232,8 +1231,7 @@ HRESULT WbemContext_create( void **obj )
|
|||
|
||||
TRACE("(%p)\n", obj);
|
||||
|
||||
context = heap_alloc( sizeof(*context) );
|
||||
if (!context) return E_OUTOFMEMORY;
|
||||
if (!(context = malloc( sizeof(*context) ))) return E_OUTOFMEMORY;
|
||||
|
||||
context->IWbemContext_iface.lpVtbl = &wbem_context_vtbl;
|
||||
context->refs = 1;
|
||||
|
|
|
@ -291,7 +291,7 @@ void free_row_values( const struct table *table, UINT row )
|
|||
type = table->columns[i].type & COL_TYPE_MASK;
|
||||
if (type == CIM_STRING || type == CIM_DATETIME || type == CIM_REFERENCE)
|
||||
{
|
||||
if (get_value( table, row, i, &val ) == S_OK) heap_free( (void *)(INT_PTR)val );
|
||||
if (get_value( table, row, i, &val ) == S_OK) free( (void *)(INT_PTR)val );
|
||||
}
|
||||
else if (type & CIM_FLAG_ARRAY)
|
||||
{
|
||||
|
@ -312,7 +312,7 @@ void clear_table( struct table *table )
|
|||
{
|
||||
table->num_rows = 0;
|
||||
table->num_rows_allocated = 0;
|
||||
heap_free( table->data );
|
||||
free( table->data );
|
||||
table->data = NULL;
|
||||
}
|
||||
}
|
||||
|
@ -321,8 +321,8 @@ void free_columns( struct column *columns, UINT num_cols )
|
|||
{
|
||||
UINT i;
|
||||
|
||||
for (i = 0; i < num_cols; i++) { heap_free( (WCHAR *)columns[i].name ); }
|
||||
heap_free( columns );
|
||||
for (i = 0; i < num_cols; i++) { free( (WCHAR *)columns[i].name ); }
|
||||
free( columns );
|
||||
}
|
||||
|
||||
void free_table( struct table *table )
|
||||
|
@ -333,11 +333,11 @@ void free_table( struct table *table )
|
|||
if (table->flags & TABLE_FLAG_DYNAMIC)
|
||||
{
|
||||
TRACE("destroying %p\n", table);
|
||||
heap_free( (WCHAR *)table->name );
|
||||
free( (WCHAR *)table->name );
|
||||
free_columns( (struct column *)table->columns, table->num_cols );
|
||||
heap_free( table->data );
|
||||
free( table->data );
|
||||
list_remove( &table->entry );
|
||||
heap_free( table );
|
||||
free( table );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -375,7 +375,7 @@ struct table *create_table( const WCHAR *name, UINT num_cols, const struct colum
|
|||
{
|
||||
struct table *table;
|
||||
|
||||
if (!(table = heap_alloc( sizeof(*table) ))) return NULL;
|
||||
if (!(table = malloc( sizeof(*table) ))) return NULL;
|
||||
table->name = heap_strdupW( name );
|
||||
table->num_cols = num_cols;
|
||||
table->columns = columns;
|
||||
|
|
|
@ -25,7 +25,6 @@
|
|||
#include "initguid.h"
|
||||
#include "objidl.h"
|
||||
#include "wbemcli.h"
|
||||
#include "wine/heap.h"
|
||||
#include "wine/test.h"
|
||||
|
||||
static HRESULT exec_query( IWbemServices *services, const WCHAR *str, IEnumWbemClassObject **result )
|
||||
|
@ -195,7 +194,7 @@ static void test_IEnumWbemClassObject_Next( IWbemServices *services )
|
|||
hr = IEnumWbemClassObject_Reset( result );
|
||||
ok( hr == S_OK, "got %08x\n", hr );
|
||||
|
||||
obj = heap_alloc( num_objects * sizeof( IWbemClassObject * ) );
|
||||
obj = malloc( num_objects * sizeof( IWbemClassObject * ) );
|
||||
|
||||
count = 0;
|
||||
hr = IEnumWbemClassObject_Next( result, 10000, num_objects, obj, &count );
|
||||
|
@ -216,7 +215,7 @@ static void test_IEnumWbemClassObject_Next( IWbemServices *services )
|
|||
for (i = 0; i < count; i++)
|
||||
IWbemClassObject_Release( obj[i] );
|
||||
|
||||
heap_free( obj );
|
||||
free( obj );
|
||||
|
||||
IEnumWbemClassObject_Release( result );
|
||||
SysFreeString( query );
|
||||
|
|
|
@ -56,7 +56,7 @@ static ULONG WINAPI wbem_locator_Release(
|
|||
if (!refs)
|
||||
{
|
||||
TRACE("destroying %p\n", wl);
|
||||
heap_free( wl );
|
||||
free( wl );
|
||||
}
|
||||
return refs;
|
||||
}
|
||||
|
@ -113,7 +113,7 @@ static HRESULT parse_resource( const WCHAR *resource, WCHAR **server, WCHAR **na
|
|||
while (*q && *q != '\\' && *q != '/') q++;
|
||||
if (!*q) return WBEM_E_INVALID_NAMESPACE;
|
||||
len = q - p;
|
||||
if (!(*server = heap_alloc( (len + 1) * sizeof(WCHAR) )))
|
||||
if (!(*server = malloc( (len + 1) * sizeof(WCHAR) )))
|
||||
{
|
||||
hr = E_OUTOFMEMORY;
|
||||
goto done;
|
||||
|
@ -134,7 +134,7 @@ static HRESULT parse_resource( const WCHAR *resource, WCHAR **server, WCHAR **na
|
|||
}
|
||||
q++;
|
||||
len = lstrlenW( q );
|
||||
if (!(*namespace = heap_alloc( (len + 1) * sizeof(WCHAR) ))) hr = E_OUTOFMEMORY;
|
||||
if (!(*namespace = malloc( (len + 1) * sizeof(WCHAR) ))) hr = E_OUTOFMEMORY;
|
||||
else
|
||||
{
|
||||
memcpy( *namespace, q, len * sizeof(WCHAR) );
|
||||
|
@ -145,8 +145,8 @@ static HRESULT parse_resource( const WCHAR *resource, WCHAR **server, WCHAR **na
|
|||
done:
|
||||
if (hr != S_OK)
|
||||
{
|
||||
heap_free( *server );
|
||||
heap_free( *namespace );
|
||||
free( *server );
|
||||
free( *namespace );
|
||||
}
|
||||
return hr;
|
||||
}
|
||||
|
@ -174,8 +174,8 @@ static HRESULT WINAPI wbem_locator_ConnectServer(
|
|||
if (!is_local_machine( server ))
|
||||
{
|
||||
FIXME("remote computer not supported\n");
|
||||
heap_free( server );
|
||||
heap_free( namespace );
|
||||
free( server );
|
||||
free( namespace );
|
||||
return WBEM_E_TRANSPORT_FAILURE;
|
||||
}
|
||||
if (User || Password || Authority)
|
||||
|
@ -186,8 +186,8 @@ static HRESULT WINAPI wbem_locator_ConnectServer(
|
|||
FIXME("unsupported flags\n");
|
||||
|
||||
hr = WbemServices_create( namespace, context, (void **)ppNamespace );
|
||||
heap_free( namespace );
|
||||
heap_free( server );
|
||||
free( namespace );
|
||||
free( server );
|
||||
if (SUCCEEDED( hr ))
|
||||
return WBEM_NO_ERROR;
|
||||
|
||||
|
@ -208,8 +208,7 @@ HRESULT WbemLocator_create( LPVOID *ppObj )
|
|||
|
||||
TRACE("(%p)\n", ppObj);
|
||||
|
||||
wl = heap_alloc( sizeof(*wl) );
|
||||
if (!wl) return E_OUTOFMEMORY;
|
||||
if (!(wl = malloc( sizeof(*wl) ))) return E_OUTOFMEMORY;
|
||||
|
||||
wl->IWbemLocator_iface.lpVtbl = &wbem_locator_vtbl;
|
||||
wl->refs = 1;
|
||||
|
|
|
@ -17,7 +17,6 @@
|
|||
*/
|
||||
|
||||
#include "wine/debug.h"
|
||||
#include "wine/heap.h"
|
||||
#include "wine/list.h"
|
||||
|
||||
enum wbm_namespace
|
||||
|
@ -280,7 +279,7 @@ static inline WCHAR *heap_strdupW( const WCHAR *src )
|
|||
{
|
||||
WCHAR *dst;
|
||||
if (!src) return NULL;
|
||||
if ((dst = heap_alloc( (lstrlenW( src ) + 1) * sizeof(WCHAR) ))) lstrcpyW( dst, src );
|
||||
if ((dst = malloc( (lstrlenW( src ) + 1) * sizeof(WCHAR) ))) lstrcpyW( dst, src );
|
||||
return dst;
|
||||
}
|
||||
|
||||
|
@ -290,7 +289,7 @@ static inline WCHAR *heap_strdupAW( const char *src )
|
|||
WCHAR *dst;
|
||||
if (!src) return NULL;
|
||||
len = MultiByteToWideChar( CP_ACP, 0, src, -1, NULL, 0 );
|
||||
if ((dst = heap_alloc( len * sizeof(*dst) ))) MultiByteToWideChar( CP_ACP, 0, src, -1, dst, len );
|
||||
if ((dst = malloc( len * sizeof(*dst) ))) MultiByteToWideChar( CP_ACP, 0, src, -1, dst, len );
|
||||
return dst;
|
||||
}
|
||||
|
||||
|
|
|
@ -49,7 +49,7 @@ struct string
|
|||
|
||||
static void *alloc_mem( struct parser *parser, UINT size )
|
||||
{
|
||||
struct list *mem = heap_alloc( sizeof(struct list) + size );
|
||||
struct list *mem = malloc( sizeof(struct list) + size );
|
||||
list_add_tail( parser->mem, mem );
|
||||
return &mem[1];
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue