I've got admit that I didn't look through all your text. But are you sure you want to set STRING* with "=" ?
especially this is very dangerous:
blocks[ix][iy][iz].objektname = "";
The literal "" (which is a char*) is stored once in memory, and its adress is copied to all blocks. That means that all blocks now share this single string, if you would change it on one block it would change the string on all blocks.
EDIT: it is also not sure if that char* gets correctly transfromed to a STRING*, wouldn't work in C but might work in lite-C.
Which brings is to another problem: I don't know if you are allowed to change a literal in lite-c. In normal C you are definatelly not allowed to do that.
It works differently on STRING* definitions i suppose:
STRING *globalstring = "lool";
Thats perfectly valid in lite-C (In c it wouldn't be).
So what's the buttom line?
use str_create for initializing the string
once and then use str_cpy to change it:
blocks[ix][iy][iz].objektname = str_create("");
str_cpy(blocks[positchange.x][positchange.y][positchange.z].setupname, placing_setupname);
if you unload the level, use ptr_remove
once to destry the string objects you have created with str_create or else I'll get a memory leak.