Asset Library Service: fix failing unit test
On GCC in release mode (and maybe also debug mode without ASAN enabled), allocating an `AssetLibraryService` will reuse the space that should have just been freed. This made a test fail, as it was testing that new memory was allocated and not some old instance reused. To ensure that the calls that should allocate a new block of memory return a unique pointer, I added some dummy allocation to the test. No functional changes to Blender
This commit is contained in:
parent
729b2d026d
commit
3edae09eaa
|
@ -60,12 +60,21 @@ TEST_F(AssetLibraryServiceTest, get_destroy)
|
|||
<< "Calling twice without destroying in between should return the same instance.";
|
||||
|
||||
AssetLibraryService::destroy();
|
||||
|
||||
/* On GCC in release mode (and maybe also debug mode without ASAN enabled), allocating an
|
||||
* #AssetLibraryService will reuse the space that should have just been freed in the above
|
||||
* destroy() call. To see that the get() call below really allocates a new object, allocate a
|
||||
* dummy block of memory first. */
|
||||
AssetLibraryService *dummy_pointer = new AssetLibraryService();
|
||||
|
||||
EXPECT_NE(service, AssetLibraryService::get())
|
||||
<< "Calling twice with destroying in between should return a new instance.";
|
||||
|
||||
/* This should not crash. */
|
||||
AssetLibraryService::destroy();
|
||||
AssetLibraryService::destroy();
|
||||
|
||||
delete dummy_pointer;
|
||||
}
|
||||
|
||||
TEST_F(AssetLibraryServiceTest, library_pointers)
|
||||
|
@ -80,11 +89,20 @@ TEST_F(AssetLibraryServiceTest, library_pointers)
|
|||
<< "Calling twice without destroying in between should return the same instance.";
|
||||
|
||||
AssetLibraryService::destroy();
|
||||
|
||||
/* On GCC in release mode (and maybe also debug mode without ASAN enabled), allocating an
|
||||
* #AssetLibraryService will reuse the space that should have just been freed in the above
|
||||
* destroy() call. To see that the get() call below really allocates a new object, allocate a
|
||||
* dummy block of memory first. */
|
||||
AssetLibrary *dummy_pointer = new AssetLibrary();
|
||||
|
||||
service = AssetLibraryService::get();
|
||||
EXPECT_NE(lib, service->get_asset_library_on_disk(asset_library_root_))
|
||||
<< "Calling twice with destroying in between should return a new instance.";
|
||||
EXPECT_NE(curfile_lib, service->get_asset_library_current_file())
|
||||
<< "Calling twice with destroying in between should return a new instance.";
|
||||
|
||||
delete dummy_pointer;
|
||||
}
|
||||
|
||||
TEST_F(AssetLibraryServiceTest, catalogs_loaded)
|
||||
|
|
Loading…
Reference in New Issue