Ow! My brain hurts from this one, so hopefully someone can explain.

Im afraid the test code Im using is messy as hell so hopefully this
'sample' code will do well enough...

Why is this (local) declaration of pointers ...
Code:
short *DATA=sys_malloc(stuff), *ROW;               //(EXAMPLE#1)


behave different to this one? And WHAT its it doing?
Code:
short *DATA=sys_malloc(stuff);   short *ROW;       //(EXAMPLE#2)




What is happening with the examples is as follows...
(we can ignore the actual content of DATA, as it is not important ATM)
So I then set the secondary pointer ROW to
Code:
ROW = &DATA[0];


And read some data into it from a file. All is going well.

Now, when I access ROW[0] I get the correct data as expected, and then when
using EXAMPLE#2 declarations, When I access ROW[1] and beyond, I actually get the data I expect.

!! BUT !! If Im using EXAMPLE#1 declarations, When I access ROW[1] I get the
data from (what should be) ROW[2]!!.

After some HEAVY diagnostics, I have discovered that using EXAMPLE#1 declaration
somehow messes up the declaration of the ROW pointer, so that when it is
told to read through an 'array' of its own type(shorts), it is acually incrementing
its memory location by FOUR instead of TWO.

Like this diagram will hopefully show....
Code:
BYTES	   01234567890123456789...
EXAMPLE#1  00..11..22..33..44....  BAD!
EXAMPLE#2  00112233445566778899... Good



The odd thing is, it is still interpreting the actual byte data CORRECTLY
into its SHORT values...


Any Ideas Anyone??? Im pretty sure its a mistake I'M making,
but I am looking more for an explaination of WHAT is happening...

Thankx in advance...


"There is no fate but what WE make." - CEO Cyberdyne Systems Corp.
A8.30.5 Commercial