static void test_StrDupA(void) { LPSTR lpszStr; const StrFormatSizeResult* result = StrFormatSize_results; while(result->value) { lpszStr = StrDupA(result->byte_size_64); ok(lpszStr != NULL, "Dup failed\n"); if (lpszStr) { ok(!strcmp(result->byte_size_64, lpszStr), "Copied string wrong\n"); LocalFree(lpszStr); } result++; } /* Later versions of shlwapi return NULL for this, but earlier versions * returned an empty string (as Wine does). */ lpszStr = StrDupA(NULL); ok(lpszStr == NULL || *lpszStr == '\0', "NULL string returned %p\n", lpszStr); LocalFree(lpszStr); }
static HDPA enum_bucket_trashinfos(const TRASH_BUCKET *bucket, int *count) { HDPA ret = DPA_Create(32); struct dirent *entry; DIR *dir = NULL; errno = ENOMEM; *count = 0; if (ret == NULL) goto failed; dir = opendir(bucket->info_dir); if (dir == NULL) goto failed; while ((entry = readdir(dir)) != NULL) { LPSTR filename; int namelen = lstrlenA(entry->d_name); int suffixlen = lstrlenA(trashinfo_suffix); if (namelen <= suffixlen || lstrcmpA(entry->d_name+namelen-suffixlen, trashinfo_suffix) != 0) continue; filename = StrDupA(entry->d_name); if (filename == NULL) goto failed; if (DPA_InsertPtr(ret, DPA_APPEND, filename) == -1) { LocalFree(filename); goto failed; } (*count)++; } closedir(dir); return ret; failed: if (dir) closedir(dir); if (ret) DPA_DestroyCallback(ret, free_item_callback, NULL); return NULL; }