Hi,
I'm creating a wrapper class for libdict (yes, I realise this has possibly been done before), and running into a segfault problem. I realise this has possibly more to do with bad C than with Foundation per se, but I'd appreciate some help :-)
libdict has a function ld_define, declared thus in libdict.h: struct ld_defanswer **ld_define(struct ld_conn *conn, char *word);
and I have an object GLDictionaryAccessor which contains the following method:
-(struct ld_defanswer **)define:(NSString *)w
{
return ld_define(connection,[w cString]);
}
I wrote an ObjC CLI interface for the class [this is, apart from for testing purposes a bit pointless, as I fgets c strings, stringWithCString them, then use cString in the wrapper object...] which does this:
if(!strcasecmp(input,"define"))
{
struct ld_defanswer **d;
printf("Define word: ");
fgets(arg1,BUFSIZ,stdin);
arg1[strlen(arg1)-1]='\0';
a1=[NSString stringWithCString:arg1];
d=[da define:a1];
if(d==NULL)
{
printf("No results for '%s'\n",arg1);
}
else
{
while(d[i]!=NULL)
{
printf("Got HERE too, d[i]=%d\n",d[i]);
printf("Found
definition:\n%s\n",d[i]->ld_ansdef);
i++;
}
}
continue;
}which looks, to me at least, the same as the code in a C CLI interface for the library, which does this:
struct ld_defanswer **ans;
int i = 0;
if(!(ans = ld_define(conn, arg))) {
printf("No results for '%s'.\n", arg);
} else {
while(ans[i]) {
printf("Found in dictionary '%s':\n", ans[i]->ld_ansdict);
printf("%s\n", ans[i]->ld_ansdef);
i++;
}
}
except that mine segfaults and theirs doesn't :-(. gdb doesn't offer much information:
dictstep> define
Define word: foo
Got HERE too, d[i]=1851596885
Program received signal EXC_BAD_ACCESS, Could not access memory.
0x000032bc in main (argc=1, argv=0xbffffb58) at dictstep.m:169
169 printf("Found definition %s:\n",d[i]->ld_ansdef);
(gdb) bt
#0 0x000032bc in main (argc=1, argv=0xbffffb58) at dictstep.m:169
(gdb) quit
I am lost.
Cheers,
Graham. -- Graham Lee GPG Key ID: 01D5B9D8 UNIX Systems Manager, Oxford Physics Practical Course http://nextstep.sdf-eu.org 01865 273450
_______________________________________________ Help-gnustep mailing list [email protected] http://lists.gnu.org/mailman/listinfo/help-gnustep
