diff --git a/drivers/filesystems/udfs/Include/mem_tools.cpp b/drivers/filesystems/udfs/Include/mem_tools.cpp index 7b9a8bf8ea499..8d9faa98ca2fc 100644 --- a/drivers/filesystems/udfs/Include/mem_tools.cpp +++ b/drivers/filesystems/udfs/Include/mem_tools.cpp @@ -6,25 +6,12 @@ #ifdef MY_USE_INTERNAL_MEMMANAGER -#ifdef _X86_ - -__inline VOID DbgTouch(IN PVOID addr) -{ - __asm { - mov eax,addr - mov al,[byte ptr eax] - } -} - -#else // NO X86 optimization , use generic C/C++ - __inline VOID DbgTouch(IN PVOID addr) { - UCHAR a = ((PUCHAR)addr)[0]; + volatile UCHAR a = ((volatile UCHAR*)addr)[0]; + (void)a; } -#endif // _X86_ - //MEM_ALLOC_DESC Allocs[MY_HEAP_MAX_BLOCKS]; MEM_FRAME_ALLOC_DESC FrameList[MY_HEAP_MAX_FRAMES]; diff --git a/drivers/filesystems/udfs/Include/mem_tools.h b/drivers/filesystems/udfs/Include/mem_tools.h index fa06ad9708fb5..c240fdce60bca 100644 --- a/drivers/filesystems/udfs/Include/mem_tools.h +++ b/drivers/filesystems/udfs/Include/mem_tools.h @@ -198,13 +198,13 @@ VOID inline MyFreePool__(PVOID addr) { // ULONG i; newaddr = (PCHAR)addr; if (!newaddr) { - __asm int 3; + __debugbreak(); return; } /* for(i=0; iBuffer; ASSERT(Str1->MaximumLength); if ((Str1->Length+i+sizeof(WCHAR)) > Str1->MaximumLength) { @@ -102,13 +82,13 @@ RtlAppendUnicodeToString( memcpy(tmp2, tmp, Str1->MaximumLength); ExFreePool(tmp); tmp = tmp2; - Str1->MaximumLength = STRING_BUFFER_ALIGN(i + sizeof(WCHAR))*2; + Str1->MaximumLength = (USHORT)(STRING_BUFFER_ALIGN(i + sizeof(WCHAR))*2); Str1->Buffer = tmp; } RtlCopyMemory(((PCHAR)tmp)+Str1->Length, Str2, i); i+=Str1->Length; tmp[(i / sizeof(WCHAR))] = 0; - Str1->Length = i; + Str1->Length = (USHORT)i; return STATUS_SUCCESS; @@ -126,35 +106,16 @@ MyInitUnicodeString( ) { - USHORT i; - -#ifdef _X86_ - - __asm push ebx - __asm push esi - __asm xor ebx,ebx - __asm mov esi,Str2 -Scan_1: - __asm cmp [word ptr esi+ebx],0 - __asm je EO_Scan - __asm add ebx,2 - __asm jmp Scan_1 -EO_Scan: - __asm mov i,bx - __asm pop esi - __asm pop ebx - -#else // NO X86 optimization, use generic C/C++ + ULONG i; i=0; - while(Str2[i]) { + while(Str2[i] && i < (MAXUSHORT / sizeof(WCHAR))) { i++; } i *= sizeof(WCHAR); -#endif // _X86_ - - Str1->MaximumLength = STRING_BUFFER_ALIGN((Str1->Length = i) + sizeof(WCHAR)); + Str1->Length = (USHORT)i; + Str1->MaximumLength = (USHORT)STRING_BUFFER_ALIGN(i + sizeof(WCHAR)); Str1->Buffer = (PWCHAR)MyAllocatePool__(NonPagedPool, Str1->MaximumLength); if (!Str1->Buffer) return STATUS_INSUFFICIENT_RESOURCES; diff --git a/drivers/filesystems/udfs/udf_dbg.h b/drivers/filesystems/udfs/udf_dbg.h index 63fc430bc3c83..82cf81e61e41a 100644 --- a/drivers/filesystems/udfs/udf_dbg.h +++ b/drivers/filesystems/udfs/udf_dbg.h @@ -120,13 +120,7 @@ DbgWaitForSingleObject_( #ifdef UDF_DBG -#ifdef _X86_ -// This is an illegal use of INT3 -#define UDFBreakPoint() { __asm int 3 } -#else // _X86_ - -#define UDFBreakPoint() DbgBreakPoint() -#endif // _X86_ +#define UDFBreakPoint() __debugbreak() #ifdef BRUTE #define BrutePoint() UDFBreakPoint() @@ -189,26 +183,12 @@ VOID DebugFreePool(PVOID addr); #define ValidateFileInfo(fi) {} #endif -#if defined (_X86_) && defined (_MSC_VER) - -__inline VOID UDFTouch(IN PVOID addr) -{ - __asm { - mov eax,addr - mov al,[byte ptr eax] - } -} - -#else // NO X86 optimization , use generic C/C++ - __inline VOID UDFTouch(IN PVOID addr) { - UCHAR a = ((PUCHAR)addr)[0]; - a = a; + UCHAR a = *((volatile UCHAR*)addr); + UNREFERENCED_PARAMETER(a); } -#endif // _X86_ - #else // UDF_DBG #define DbgAllocatePool(x,y) ExAllocatePoolWithTag(x,y,'Fnwd')