Liste des Groupes | Revenir à theory |
On 08/05/2025 02:20, olcott wrote:deprecated.
<snip>
Does there exist an HHH such that DDD emulated byLet's take a look.
HHH according to the rules of the C programming language
The file is 1373 lines long, but don't worry, because I plan to stop at HHH's first departure from the rules of the C programming language (or at least the first departure I spot).
Turn in your songbook if you will to:
void CopyMachineCode(u8* source, u8** destination)
{
u32 size;
for (size = 0; source[size] != 0xcc; size++)
;
*destination = (u8*) Allocate(size);
for (u32 N = 0; N < size; N++)
{
Output("source[N]: ", source[N]);
*destination[N] = source[N];
}
((u32*)*destination)[-1] = size;
Output("CopyMachineCode destination[-1]: ", ((u32*)*destination)[-1]);
Output("CopyMachineCode destination[-2]: ", ((u32*)*destination)[-2]);
};
I'll ignore the syntax error (a null statement at file scope is a rookie error).If you can't even understand what is essentially
Instead, let's jump straight to this line:
*destination = (u8*) Allocate(size);
On line 79 of my copy of the code, we find:
u32* Allocate(u32 size) { return 0; }
In C, 0 is a null pointer constant, so Allocate returns a null pointer constant... which is fine as long as you don't try to deref it. So now *destination is NULL.
We go on:
for (u32 N = 0; N < size; N++)
{
Output("source[N]: ", source[N]);
*destination[N] = source[N];
}
*destination[N] is our first big problem (we're ignoring syntax errors, remember). destination is a null pointer, so destination[N] derefs a null pointer.
That's a fail. 0/10, D-, go away and write it again. And you /dare/ to impugn other people's C knowledge! Crack a book, for pity's sake.
Les messages affichés proviennent d'usenet.