000
09.04.2003, 22:14 Uhr
FloSoft
Medialer Over-Flow (Administrator)
|
Hallo, ich kriege immer folgende Fehlermeldung beim Start eines selbstgeschriebenen Programmes:
C++: |
Initializing Classes... Done
Start of Serverlist:
Segmentation fault
|
bzw einfach nur
C++: |
./gateway: line 4: 21134 Segmentation fault ./uogate
|
wenn ich das Programm über ein Script starte.
Woran kann so etwas liegen? die Stelle ist so:
C++: |
FILE *f = fopen("server.ini","rb"); if(f) { int iPos = 0; char cTempL[1025]; ServerList Temp; memset(&Temp,0,sizeof(Temp)); while(fgets(cTempL,1024,f)) { for(int x = 0; x < 1025; x++) { if(cTempL[x] < 32) cTempL[x] = '\0'; } switch(iPos) { case 0: // Serverstring { Temp.sServer = cTempL; //Console.send("> Name: %s\n", cTempL); } break; case 1: // Serverip { Temp.sIP = cTempL;
unsigned long ip = 0; sockaddr_in saSin; hostent *heHost = NULL; saSin.sin_family = AF_INET; ip = inet_addr(cTempL); if (ip == INADDR_NONE) { heHost = gethostbyname(cTempL);
Console.send("> Host: %s ", cTempL); if (heHost == NULL) { #ifdef _WIN32 errno = WSAGetLastError(); #endif sprintf((char*)cTemp, "warning: %d resolving name: %s\n", errno, cTempL); LogWarning((char*)cTemp); LogWarning("switching to localhost\n");
Console.send("(%s)", "127.0.0.1"); } else { memcpy((char*)&(saSin.sin_addr), heHost->h_addr, heHost->h_length);
Temp.sIP = sock_ntop(saSin); Console.send("(%s)", sock_ntop(saSin).c_str()); } Console.send("\n"); } else { Console.send("> IP: %s\n", cTempL); } } break; case 2: // Serverport { Temp.usPort = atoi(cTempL); //Console.send("> Port: %s\n\n", cTempL); m_ServerList.push_back(Temp); Temp.sServer = ""; Temp.sIP = ""; Temp.usPort = 0; memset(&Temp,0,sizeof(Temp)); iPos = -1; } break; } iPos++; memset(cTemp,0,sizeof(cTemp)); } fclose(f);
return 1; } return 0;
|
sServer und sIP sind std::string kann es vielleicht daran liegen? wenn ich die namensauflösung rausmache, bekomme ich trotzdem der/die/das Segmentation fault! -- class God : public ChuckNorris { }; |