07-fix-free-aliasing-issue.patch 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. Author: Michael Karcher <debian@mkarcher.dialup.fu-berlin.de>
  2. Description: This patch redefines how BASE_MEMORY_FreeCheck works, and avoids
  3. tons of "may break strict aliasing rules" warnings. It also removes
  4. casts on invocation.
  5. --- unace-nonfree-2.5.orig/source/apps/exe/messages/messages.c
  6. +++ unace-nonfree-2.5/source/apps/exe/messages/messages.c
  7. @@ -107,7 +107,7 @@ ULONG Bits;
  8. APPS_EXE_MESSAGES_Skip(Start - 22);
  9. - BASE_MEMORY_FreeCheck((PVOID *) &APPS_EXE_MESSAGES.MessagesBuf);
  10. + BASE_MEMORY_FreeCheck(APPS_EXE_MESSAGES.MessagesBuf);
  11. if (!(APPS_EXE_MESSAGES.MessagesBuf =
  12. (PCHAR) BASE_MEMORY_GetMem(*Size + 1)))
  13. --- unace-nonfree-2.5.orig/source/base/all/archives/read/read.c
  14. +++ unace-nonfree-2.5/source/base/all/archives/read/read.c
  15. @@ -22,8 +22,8 @@
  16. void BASE_ARCHIVES_READ_FreeArchiveList(void)
  17. {
  18. - BASE_MEMORY_FreeCheck((PVOID *) &BASE_ARCHIVES_READ.FileData);
  19. - BASE_MEMORY_FreeCheck((PVOID *) &BASE_ARCHIVES_READ.FileNames);
  20. + BASE_MEMORY_FreeCheck(BASE_ARCHIVES_READ.FileData);
  21. + BASE_MEMORY_FreeCheck(BASE_ARCHIVES_READ.FileNames);
  22. }
  23. /*-----------------BASE_ARCHIVES_READ_GetArchiveList---------------------*/
  24. --- unace-nonfree-2.5.orig/source/base/all/bufread/bufread.c
  25. +++ unace-nonfree-2.5/source/base/all/bufread/bufread.c
  26. @@ -134,7 +134,7 @@ void BASE_BUFREAD_Close(void)
  27. {
  28. close(BASE_BUFREAD.Handle);
  29. BASE_BUFREAD.Handle = -1;
  30. - BASE_MEMORY_FreeCheck((PVOID *) &BASE_BUFREAD.Buf);
  31. + BASE_MEMORY_FreeCheck(BASE_BUFREAD.Buf);
  32. }
  33. /*-----------------BASE_BUFREAD_Tell-------------------------------------*/
  34. --- unace-nonfree-2.5.orig/source/base/all/dcpr/comments/comments.c
  35. +++ unace-nonfree-2.5/source/base/all/dcpr/comments/comments.c
  36. @@ -45,7 +45,7 @@ void BASE_DCPR_COMMENTS_Done(void)
  37. {
  38. if (BASE_DCPR.DoFreeReadBuf)
  39. {
  40. - BASE_MEMORY_FreeCheck((PVOID *) &BASE_DCPR.ReadBuf);
  41. + BASE_MEMORY_FreeCheck(BASE_DCPR.ReadBuf);
  42. }
  43. }
  44. --- unace-nonfree-2.5.orig/source/base/all/dcpr/dcpr.c
  45. +++ unace-nonfree-2.5/source/base/all/dcpr/dcpr.c
  46. @@ -301,8 +301,8 @@ void BASE_DCPR_Done(void)
  47. {
  48. if (BASE_DCPR.IsInitialized)
  49. {
  50. - BASE_MEMORY_FreeCheck((PVOID *) &BASE_DCPR.ReadBuf);
  51. - BASE_MEMORY_FreeCheck((PVOID *) &BASE_DCPR_LZ77.Dictionary);
  52. + BASE_MEMORY_FreeCheck(BASE_DCPR.ReadBuf);
  53. + BASE_MEMORY_FreeCheck(BASE_DCPR_LZ77.Dictionary);
  54. BASE_DCPR.IsInitialized = 0;
  55. BASE_MEMORY_Optimize();
  56. }
  57. --- unace-nonfree-2.5.orig/source/base/all/dcpr/pic/pic.c
  58. +++ unace-nonfree-2.5/source/base/all/dcpr/pic/pic.c
  59. @@ -137,7 +137,7 @@ void BASE_DCPR_PIC_Done(void)
  60. BASE_DCPR_PIC.Data[0] -= BASE_DCPR_PIC.Planes;
  61. BASE_DCPR_PIC.Data[1] -= BASE_DCPR_PIC.Planes;
  62. - BASE_MEMORY_FreeCheck((PVOID *) &BASE_DCPR_PIC.Data[0]);
  63. - BASE_MEMORY_FreeCheck((PVOID *) &BASE_DCPR_PIC.Data[1]);
  64. + BASE_MEMORY_FreeCheck(BASE_DCPR_PIC.Data[0]);
  65. + BASE_MEMORY_FreeCheck(BASE_DCPR_PIC.Data[1]);
  66. }
  67. }
  68. --- unace-nonfree-2.5.orig/source/base/all/extract/extract.c
  69. +++ unace-nonfree-2.5/source/base/all/extract/extract.c
  70. @@ -232,10 +232,10 @@ UINT NTFSSecuritySize;
  71. {
  72. BASE_LFN_SetFileAttributes(BASE_STATE.DestinationFileName, Attr);
  73. BASE_DOSFUNCS_SetFileSecurity(BASE_STATE.DestinationFileName, NTFSSecurity);
  74. - BASE_MEMORY_FreeCheck((PVOID)&NTFSSecurity);
  75. + BASE_MEMORY_FreeCheck(NTFSSecurity);
  76. }
  77. - BASE_MEMORY_FreeCheck((PVOID *) &Buf);
  78. + BASE_MEMORY_FreeCheck(Buf);
  79. return;
  80. --- unace-nonfree-2.5.orig/source/base/all/filelist/filelist.c
  81. +++ unace-nonfree-2.5/source/base/all/filelist/filelist.c
  82. @@ -290,7 +290,7 @@ INT BufSize;
  83. if (!(BASE_FILELIST.ListFileData =
  84. (pBASE_FILELIST_FileData) BASE_MEMORY_GetMemBase2(&BufSize, 1)))
  85. {
  86. - BASE_MEMORY_FreeCheck((PVOID *) &BASE_FILELIST.List);
  87. + BASE_MEMORY_FreeCheck(BASE_FILELIST.List);
  88. return;
  89. }
  90. @@ -303,8 +303,8 @@ INT BufSize;
  91. void BASE_FILELIST_Done(void)
  92. {
  93. - BASE_MEMORY_FreeCheck((PVOID *) &BASE_FILELIST.List);
  94. - BASE_MEMORY_FreeCheck((PVOID *) &BASE_FILELIST.ListFileData);
  95. + BASE_MEMORY_FreeCheck(BASE_FILELIST.List);
  96. + BASE_MEMORY_FreeCheck(BASE_FILELIST.ListFileData);
  97. BASE_MEMORY_Optimize();
  98. }
  99. --- unace-nonfree-2.5.orig/source/base/all/lfn/lin.c
  100. +++ unace-nonfree-2.5/source/base/all/lfn/lin.c
  101. @@ -67,7 +67,7 @@ tLFN SearchFile,
  102. }
  103. }
  104. - BASE_MEMORY_FreeCheck((PVOID*)&Env);
  105. + BASE_MEMORY_FreeCheck(Env);
  106. }
  107. }
  108. --- unace-nonfree-2.5.orig/source/base/all/memory/memory.c
  109. +++ unace-nonfree-2.5/source/base/all/memory/memory.c
  110. @@ -150,13 +150,12 @@ INT MemSize;
  111. /*-----------------BASE_MEMORY_FreeCheck---------------------------------*/
  112. -void BASE_MEMORY_FreeCheck(PVOID *Pointer)
  113. +void BASE_MEMORY_FreeCheck_(PVOID Pointer)
  114. {
  115. - if (*Pointer)
  116. + if (Pointer)
  117. {
  118. - BASE_MEMORY.MaxAllocate += BASE_MEMORY_Size(*Pointer);
  119. - free((PVOID) (((PULONG) *Pointer) - 1));
  120. - *Pointer = NULL;
  121. + BASE_MEMORY.MaxAllocate += BASE_MEMORY_Size(Pointer);
  122. + free((PVOID) (((PULONG) Pointer) - 1));
  123. }
  124. }
  125. @@ -183,7 +182,7 @@ INT OldSize,
  126. }
  127. memcpy(NewPointer, OldPointer, OldSize);
  128. - BASE_MEMORY_FreeCheck(&OldPointer);
  129. + BASE_MEMORY_FreeCheck(OldPointer);
  130. if (BASE_MEMORY_MemMax() < MemMaxSize)
  131. {
  132. @@ -193,7 +192,7 @@ INT OldSize,
  133. }
  134. memcpy(OldPointer, NewPointer, OldSize);
  135. - BASE_MEMORY_FreeCheck(&NewPointer);
  136. + BASE_MEMORY_FreeCheck(NewPointer);
  137. return OldPointer;
  138. }
  139. --- unace-nonfree-2.5.orig/source/base/all/memory/memory.h
  140. +++ unace-nonfree-2.5/source/base/all/memory/memory.h
  141. @@ -32,7 +32,8 @@ PVOID BASE_MEMORY_GetMemBase2Max(PINT
  142. PVOID BASE_MEMORY_GetMemBase2PlusMax(PINT Size, INT Base, INT Maximum,
  143. INT Plus);
  144. -void BASE_MEMORY_FreeCheck(PVOID *Pointer);
  145. +void BASE_MEMORY_FreeCheck_(PVOID Pointer);
  146. +#define BASE_MEMORY_FreeCheck(ptr) do { BASE_MEMORY_FreeCheck_(ptr); ptr=0; } while(0)
  147. PVOID BASE_MEMORY_ReAlloc(PVOID OldPointer, INT NewSize);
  148. PVOID BASE_MEMORY_ReAllocSameSize(PVOID OldPointer);
  149. void BASE_MEMORY_InitAlloc(void);