@Blunker

Из-за чего может быть Segmentation fault?

Взял код из примеров на оф сайте библиотеки. Но почему то при запуске вылетает seg fault. Компилируется без ошибок:(

void send_picture(char *filename)
{
    CURL *curl;
	CURLcode res;
	FILE *hd_src;
	struct stat file_info;
	curl_off_t fsize;
    struct curl_slist *headerlist = NULL;
    static const char buf_1[] = "RNFR " UPLOAD_FILE_AS;
    static const char buf_2[] = "RNTO " RENAME_FILE_TO;

	
	if (stat(filename, &file_info))
	{
		printf("Couldnt open '%s': %s\n", filename, strerror(errno));
		
		exit(1);
	}
	
	fsize = (curl_off_t)file_info.st_size;

	printf("Local file size: %" CURL_FORMAT_CURL_OFF_T " bytes.\n", fsize);
	
	hd_src = fopen(filename, "rb");
	
	curl_global_init(CURL_GLOBAL_ALL);
	
	curl = curl_easy_init();
	
	if (curl)
	{
		curl_easy_setopt(curl, CURLOPT_USERNAME, "test");
        headerlist = curl_slist_append(headerlist, buf_1);
        headerlist = curl_slist_append(headerlist, buf_2);
		curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
		curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
        curl_easy_setopt(curl, CURLOPT_URL, REMOTE_URL);
        curl_easy_setopt(curl, CURLOPT_POSTQUOTE, headerlist);
		curl_easy_setopt(curl, CURLOPT_READDATA, hd_src);
		curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, (curl_off_t)fsize);
		
		res = curl_easy_perform(curl);

        curl_easy_cleanup(curl);
	}
	
	fclose(hd_src);
	
	curl_global_cleanup();
}
  • Вопрос задан
  • 387 просмотров
Пригласить эксперта
Ответы на вопрос 1
Вы hd_src не проверяете, при проблемах с открытием файла будет обращение по нулевому указателю. А функцию read_callback вы определили?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы