I cannot get this code to work properly. When I try to compile it, one of three things will happen: Either I'll get no errors, but when I run the program, it immediately locks up; or it'll compile fine, but says 'Segmentation fault' and exits when I run it; or it gives warnings when compiled:
"conflicting types for ‘addObjToTree’
previous implicit declaration of ‘addObjToTree’ was here"
but then says 'Segmentation fault' and exits when I try to run it.
I'm on Mac OS X 10.6 using gcc.
game-obj.h:
typedef struct itemPos {
    float x;
    float y;
} itemPos;
typedef struct gameObject {
    itemPos loc;
    int uid;
    int kind;
    int isEmpty;
       ... 
 } gameObject;
internal-routines.h:
void addObjToTree (gameObject *targetObj, gameObject *destTree[]) {
    int i = 0;
    int stop = 1;
    while (stop) {
        if ((*destTree[i]).isEmpty == 0)
            i++;
        else if ((*destTree[i]).isEmpty == 1)
            stop = 0;
        else
            ;/*ERROR*/
            }
    if (stop == 0) {
        destTree[i] = targetObj;
    }
    else
    {
        ;/*ERROR*/
    }
}
/**/
void initFS_LA (gameObject *target, gameObject *tree[], itemPos destination) {
    addObjToTree(target, tree);
    (*target).uid = 12981;
    (*target).kind = 101;
    (*target).isEmpty = 0;
    (*target).maxHealth = 100;
    (*target).absMaxHealth = 200;
    (*target).curHealth = 100;
    (*target).skill = 1;
    (*target).isSolid = 1;
    (*target).factionID = 555;
    (*target).loc.x = destination.x;
    (*target).loc.y = destination.y;
}
main.c:
   #include "game-obj.h"
    #include "internal-routines.h"
    #include <stdio.h>
    int main()
{
    gameObject abc;
    gameObject jkl;
    abc.kind = 101;
    abc.uid = 1000;
    itemPos aloc;
    aloc.x = 10;
    aloc.y = 15;
    gameObject *masterTree[3];
    masterTree[0] = &(abc);
    initFS_LA(&jkl, masterTree, aloc);
    printf("%d\n",jkl.factionID);
    return 0;
}
I don't understand why it doesn't work. I just want addObjToTree(...) to add a pointer to a gameObject in the next free space of masterTree, which is an array of pointers to gameObject structures. even weirder, if I remove the line addObjToTree(target, tree); from initFS_LA(...) it works perfectly. I've already created a function that searches masterTree by uid and that also works fine, even if I initialize a new gameObject with initFS_LA(...) (without the addObjToTree line.) I've tried rearranging the functions within the header file, putting them into separate header files, prototyping them, rearranging the order of #includes, explicitly creating a pointer variable instead of using &jkl, but absolutely nothing works. Any ideas? I appreciate any help
 
     
    