does anyone have any idea why this gives a segmentation fault?
(and please tell me why)

Code:
char *cut(char *instr, char delim, int field, int blen)
{
printf("monkeys\n");
        int i=0,curfield=0,startindex=0,len=str_length(instr);
        char *outstr;
        outstr = (char*) malloc ( sizeof(char) * str_length(instr) );
//printf("monkeys\n");  ( if i have this here, it runs... if it is commented out it has a seg fault )
        while( (instr[startindex]!='\0') && (curfield!=field) && (i<len) )
        {
                if(instr[startindex]==delim)
                        curfield++;
                startindex++;
        }
        if(blen==0)
        {
                i=0;
                while( (instr[startindex+i]!=delim) && (startindex+i<len) && (i<str_length(instr)) )
                {
                        outstr[i]=instr[startindex+i];
                        i++;
                }
        }
        else if(blen>0)
        {
                i=0;
                while( (instr[startindex+i]!=delim) && (i<blen) && (startindex+i<len) && (i<str_length(instr)) )
                {
                        outstr[i]=instr[startindex+i];
                        i++;
                }
        }
        outstr[i] = '\0';
printf("monkeys\n");
        return outstr;
}