From 3f33ccb9a723b2e214a76880d4830398698d27db Mon Sep 17 00:00:00 2001 From: red031000 Date: Sun, 13 Sep 2020 17:27:26 +0100 Subject: FISRT FUNC DECOMPED, DLInsert --- src/SDK/OS/OSAlloc.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/SDK/OS/OSAlloc.c (limited to 'src/SDK/OS') diff --git a/src/SDK/OS/OSAlloc.c b/src/SDK/OS/OSAlloc.c new file mode 100644 index 0000000..e0ad024 --- /dev/null +++ b/src/SDK/OS/OSAlloc.c @@ -0,0 +1,49 @@ +#include "types.h" +#include "OS/OSAlloc.h" + +Cell *DLInsert(Cell *original, Cell *inserted) +{ + Cell *prevCell = NULL; + Cell *nextCell = original; + + for (nextCell = original, prevCell = NULL; nextCell; prevCell = nextCell, nextCell = nextCell->next) + { + if (inserted <= nextCell) + break; + } + + inserted->next = nextCell; + inserted->prev = prevCell; + + if (nextCell != NULL) + { + nextCell->prev = inserted; + Cell * temp = (Cell *)((char *)inserted + inserted->size); + if (temp == nextCell) + { + inserted->size += nextCell->size; + nextCell = nextCell->next; + inserted->next = nextCell; + if (nextCell != NULL) + nextCell->prev = inserted; + } + } + + if (prevCell != NULL) + { + prevCell->next = inserted; + Cell * temp = (Cell *)((char *)prevCell + prevCell->size); + + if (temp != inserted) + return original; + + prevCell->size += inserted->size; + prevCell->next = nextCell; + if (nextCell != NULL) + nextCell->prev = prevCell; + + return original; + } + + return inserted; +} \ No newline at end of file -- cgit v1.2.3 From 9c1b7dcd0a71137bd1193e5753a92607e2b301ad Mon Sep 17 00:00:00 2001 From: red031000 Date: Sun, 13 Sep 2020 17:29:14 +0100 Subject: newline --- src/SDK/OS/OSAlloc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/SDK/OS') diff --git a/src/SDK/OS/OSAlloc.c b/src/SDK/OS/OSAlloc.c index e0ad024..090233e 100644 --- a/src/SDK/OS/OSAlloc.c +++ b/src/SDK/OS/OSAlloc.c @@ -46,4 +46,4 @@ Cell *DLInsert(Cell *original, Cell *inserted) } return inserted; -} \ No newline at end of file +} -- cgit v1.2.3