feat(dispose): add debug checks for double disposal
Added debug-only checks in Dispose methods of HashMapHelper, UnTypedArray, and UnsafeArray to log a message (with optional stack trace) if Dispose is called on an uninitialized or already disposed instance, unless the buffer is null. Incremented assembly version to 1.6.6.
This commit is contained in:
@@ -719,6 +719,12 @@ public unsafe struct HashMapHelper<TKey> : IDisposable
|
|||||||
{
|
{
|
||||||
if (!IsCreated)
|
if (!IsCreated)
|
||||||
{
|
{
|
||||||
|
#if DEBUG
|
||||||
|
if (_buffer == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var message = "The HashMapHelper is not created or already disposed.";
|
var message = "The HashMapHelper is not created or already disposed.";
|
||||||
#if MHP_ENABLE_STACKTRACE
|
#if MHP_ENABLE_STACKTRACE
|
||||||
var stackTrace = new StackTrace(1, true);
|
var stackTrace = new StackTrace(1, true);
|
||||||
@@ -736,6 +742,7 @@ public unsafe struct HashMapHelper<TKey> : IDisposable
|
|||||||
message += Environment.NewLine + sb.ToString();
|
message += Environment.NewLine + sb.ToString();
|
||||||
#endif
|
#endif
|
||||||
Debug.WriteLine(message);
|
Debug.WriteLine(message);
|
||||||
|
#endif
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -273,6 +273,11 @@ public unsafe struct UnTypedArray : IUnTypedCollection
|
|||||||
{
|
{
|
||||||
if (!IsCreated)
|
if (!IsCreated)
|
||||||
{
|
{
|
||||||
|
#if DEBUG
|
||||||
|
if (_buffer == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
var message = "The UnTypedArray is not created or already disposed.";
|
var message = "The UnTypedArray is not created or already disposed.";
|
||||||
#if MHP_ENABLE_STACKTRACE
|
#if MHP_ENABLE_STACKTRACE
|
||||||
var stackTrace = new StackTrace(1, true);
|
var stackTrace = new StackTrace(1, true);
|
||||||
@@ -290,6 +295,7 @@ public unsafe struct UnTypedArray : IUnTypedCollection
|
|||||||
message += Environment.NewLine + sb.ToString();
|
message += Environment.NewLine + sb.ToString();
|
||||||
#endif
|
#endif
|
||||||
Debug.WriteLine(message);
|
Debug.WriteLine(message);
|
||||||
|
#endif
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -418,6 +418,12 @@ public unsafe struct UnsafeArray<T> : IUnsafeCollection<T>
|
|||||||
{
|
{
|
||||||
if (!IsCreated)
|
if (!IsCreated)
|
||||||
{
|
{
|
||||||
|
#if DEBUG
|
||||||
|
if (_buffer == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var message = "The UnsafeArray is not created or already disposed.";
|
var message = "The UnsafeArray is not created or already disposed.";
|
||||||
#if MHP_ENABLE_STACKTRACE
|
#if MHP_ENABLE_STACKTRACE
|
||||||
var stackTrace = new StackTrace(1, true);
|
var stackTrace = new StackTrace(1, true);
|
||||||
@@ -435,6 +441,7 @@ public unsafe struct UnsafeArray<T> : IUnsafeCollection<T>
|
|||||||
message += Environment.NewLine + sb.ToString();
|
message += Environment.NewLine + sb.ToString();
|
||||||
#endif
|
#endif
|
||||||
Debug.WriteLine(message);
|
Debug.WriteLine(message);
|
||||||
|
#endif
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
||||||
<Authors>Misaki</Authors>
|
<Authors>Misaki</Authors>
|
||||||
<AssemblyVersion>1.6.5</AssemblyVersion>
|
<AssemblyVersion>1.6.6</AssemblyVersion>
|
||||||
<Version>$(AssemblyVersion)</Version>
|
<Version>$(AssemblyVersion)</Version>
|
||||||
<PackageProjectUrl>https://git.personalnas.com/Misaki/Misaki.HighPerformance.git</PackageProjectUrl>
|
<PackageProjectUrl>https://git.personalnas.com/Misaki/Misaki.HighPerformance.git</PackageProjectUrl>
|
||||||
<RepositoryUrl>https://git.personalnas.com/Misaki/Misaki.HighPerformance.git</RepositoryUrl>
|
<RepositoryUrl>https://git.personalnas.com/Misaki/Misaki.HighPerformance.git</RepositoryUrl>
|
||||||
|
|||||||
Reference in New Issue
Block a user