mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-16 18:59:11 +02:00
* Apply bugfix patch by Michalis Kamburelis from bug report 13463
git-svn-id: trunk@12999 -
This commit is contained in:
parent
ab41a9b2b1
commit
1b8902e341
@ -117,11 +117,19 @@ procedure fftw_freemem(p:pointer);inline;
|
|||||||
|
|
||||||
procedure fftw_getmem(var p:pointer;size:sizeint);
|
procedure fftw_getmem(var p:pointer;size:sizeint);
|
||||||
|
|
||||||
begin
|
|
||||||
{$IFDEF align}
|
{$IFDEF align}
|
||||||
getmem(p,size+16-1);
|
var
|
||||||
|
originalptr:pointer;
|
||||||
|
begin
|
||||||
|
{ We allocate additional "align-1" bytes to be able to align.
|
||||||
|
And we allocate additional "SizeOf(Pointer)" to always have space to store
|
||||||
|
the value of the original pointer. }
|
||||||
|
getmem(originalptr,size + align-1 + SizeOf(Pointer));
|
||||||
|
ptruint(p):=(ptruint(originalptr) + SizeOf(Pointer));
|
||||||
ptruint(p):=(ptruint(p)+align-1) and not (align-1);
|
ptruint(p):=(ptruint(p)+align-1) and not (align-1);
|
||||||
|
PPointer(ptruint(p) - SizeOf(Pointer))^:=originalptr;
|
||||||
{$ELSE}
|
{$ELSE}
|
||||||
|
begin
|
||||||
getmem(p,size);
|
getmem(p,size);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
end;
|
end;
|
||||||
@ -129,7 +137,11 @@ end;
|
|||||||
procedure fftw_freemem(p:pointer);inline;
|
procedure fftw_freemem(p:pointer);inline;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
{$IFDEF align}
|
||||||
|
freemem(PPointer(ptruint(p) - SizeOf(Pointer))^);
|
||||||
|
{$ELSE}
|
||||||
freemem(p);
|
freemem(p);
|
||||||
|
{$ENDIF}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
Loading…
Reference in New Issue
Block a user