Author: Alex Barkov Email: [EMAIL PROTECTED] Message: Fixed in 3.2.2 > mnogosearch v3.2.1 > i think i've found where is the problem in the code (sql.c) : > > (gdb) next > 2879 Server.tag >=strdup(UDM_EMPTY2NULL(UdmSQLValue(res,i,3))); > (gdb) next > > Program received signal SIGSEGV, Segmentation fault. > 0x400a39fd in __strdup (s=0x0) at strdup.c:42 > 42 strdup.c: No such file or directory. > > well, the same would be with category and charset if they are empty in the table.. > why do you use UDM_EMPTY2NULL ? cant strdup work with NULL argument > > then, I've set tag,category and charset to some nonempty value in my table. > but there is still a segfault.. > > below is something from gdb, note plz: > 1.basic_auth is empty in my table, why do program step lines 2885-2891? > 2. well, there is a call of UdmSQLValue in line 2893, but why it steps > twise thru this func? (the same in previous calls of func - lines 2877..and then) > 3.well, proxy is empty also, and the same thing - segfault > (now, unlike tag,charset or category i cant set some stupid value for proxy - >there is NO proxy) > > > > UdmLoadServerTable (Indexer=0x9195990, name=0xbfff3131 "servers2", >flags=132) at sql.c:2885 > 2885 if(Server.basic_auth){ > (gdb) > 2888 basic_auth=(char*) >UdmXmalloc(BASE64_LEN(strlen(Server.basic_auth))); > (gdb) > 2889 >udm_base64_encode(Server.basic_auth,basic_auth,strlen(Server.basic_auth)); > (gdb) > 2890 Server.basic_auth=basic_auth; > (gdb) > 2891 } > (gdb) > 2893 Server.proxy >=strdup(UDM_EMPTY2NULL(UdmSQLValue(res,i,8))); > (gdb) > > Breakpoint 1, UdmSQLValue (res=0x918c8f0, i=0, j=8) at sql.c:2645 > 2645 if(res->lmysqlrow==0){ > (gdb) next > 2646 >mysql_data_seek(res->mysqlres,(my_ulonglong)0); > (gdb) > 2651 }else > (gdb) > 2656 res->mysqlrow=mysql_fetch_row(res->mysqlres); > (gdb) > 2658 res->lmysqlrow=i; > (gdb) > 2659 >if(res->mysqlrow)return(res->mysqlrow[j]?res->mysqlrow[j]:""); > (gdb) > 2678 } > (gdb) > > Breakpoint 1, UdmSQLValue (res=0x918c8f0, i=0, j=8) at sql.c:2645 > 2645 if(res->lmysqlrow==0){ > (gdb) > 2646 >mysql_data_seek(res->mysqlres,(my_ulonglong)0); > (gdb) > 2651 }else > (gdb) > 2656 res->mysqlrow=mysql_fetch_row(res->mysqlres); > (gdb) > 2658 res->lmysqlrow=i; > (gdb) > 2659 >if(res->mysqlrow)return(res->mysqlrow[j]?res->mysqlrow[j]:""); > (gdb) > 2678 } > (gdb) > > Program received signal SIGSEGV, Segmentation fault. > 0x400a39fd in __strdup (s=0x0) at strdup.c:42 > 42 strdup.c: No such file or directory. > (gdb) > > Program terminated with signal SIGSEGV, Segmentation fault. > The program no longer exists. > > > in the version 3.1.19 it was made this way: > > sql.c:2020: > Server.url =sql_value(db->res,i,1); > Server.period =UDM_ATOI(sql_value(db->res,i,2)); > Server.tag =sql_value(db->res,i,3); > Server.category =sql_value(db->res,i,4); > Server.charset =sql_value(db->res,i,5); > >strncpy(Server.lang,UDM_NULL2EMPTY(sql_value(db->res,i,6)),2);Server.lang[2]='\0'; > Server.basic_auth =UDM_EMPTY2NULL(sql_value(db->res,i,7)); > > if(Server.basic_auth){ > char * basic_auth; > > basic_auth=(char*) >UdmXmalloc(BASE64_LEN(strlen(Server.basic_auth))); > >udm_base64_encode(Server.basic_auth,basic_auth,strlen(Server.basic_auth)); > Server.basic_auth=basic_auth; > } > > Server.proxy =UDM_EMPTY2NULL(sql_value(db->res,i,8)); > Server.proxy_port =UDM_ATOI(sql_value(db->res,i,9)); > Server.proxy_basic_auth =UDM_EMPTY2NULL(sql_value(db->res,i,10)); > Server.maxhops =UDM_ATOI(sql_value(db->res,i,11)); > Server.index =UDM_ATOI(sql_value(db->res,i,12)); > Server.follow =UDM_ATOI(sql_value(db->res,i,13)); > Server.deletebad =UDM_ATOI(sql_value(db->res,i,14)); > > and it does work > > > I am not C guru, of cause > so, something in my thougts may sound stupid > > plz let me know what is a problem. > > thnx >
Reply: <http://www.mnogosearch.org/board/message.php?id=3360> ___________________________________________ If you want to unsubscribe send "unsubscribe general" to [EMAIL PROTECTED]