kopia lustrzana https://gitlab.com/sane-project/backends
Merge branch 'escl-clean' into 'master'
escl - release memory and close descriptor. See merge request sane-project/backends!435merge-requests/463/merge
commit
10408cfa99
|
@ -141,7 +141,7 @@ memory_callback_c(void *contents, size_t size, size_t nmemb, void *userp)
|
||||||
|
|
||||||
char *str = realloc(mem->memory, mem->size + realsize + 1);
|
char *str = realloc(mem->memory, mem->size + realsize + 1);
|
||||||
if (str == NULL) {
|
if (str == NULL) {
|
||||||
fprintf(stderr, "not enough memory (realloc returned NULL)\n");
|
DBG(10, "not enough memory (realloc returned NULL)\n");
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
mem->memory = str;
|
mem->memory = str;
|
||||||
|
@ -442,6 +442,8 @@ clean_data:
|
||||||
xmlCleanupParser();
|
xmlCleanupParser();
|
||||||
xmlMemoryDump();
|
xmlMemoryDump();
|
||||||
curl_easy_cleanup(curl_handle);
|
curl_easy_cleanup(curl_handle);
|
||||||
free(var->memory);
|
if (var)
|
||||||
|
free(var->memory);
|
||||||
|
free(var);
|
||||||
return (scanner);
|
return (scanner);
|
||||||
}
|
}
|
||||||
|
|
|
@ -120,7 +120,6 @@ jpeg_RW_src(j_decompress_ptr cinfo, FILE *ctx)
|
||||||
if (cinfo->src == NULL) {
|
if (cinfo->src == NULL) {
|
||||||
cinfo->src = (struct jpeg_source_mgr *)(*cinfo->mem->alloc_small)
|
cinfo->src = (struct jpeg_source_mgr *)(*cinfo->mem->alloc_small)
|
||||||
((j_common_ptr) cinfo, JPOOL_PERMANENT, sizeof(my_source_mgr));
|
((j_common_ptr) cinfo, JPOOL_PERMANENT, sizeof(my_source_mgr));
|
||||||
src = (my_source_mgr *) cinfo->src;
|
|
||||||
}
|
}
|
||||||
src = (my_source_mgr *) cinfo->src;
|
src = (my_source_mgr *) cinfo->src;
|
||||||
src->pub.init_source = init_source;
|
src->pub.init_source = init_source;
|
||||||
|
|
|
@ -74,18 +74,24 @@ escl_scan(capabilities_t *scanner, const ESCL_Device *device, char *result)
|
||||||
scan_jobs, result, scanner_start);
|
scan_jobs, result, scanner_start);
|
||||||
escl_curl_url(curl_handle, device, scan_cmd);
|
escl_curl_url(curl_handle, device, scan_cmd);
|
||||||
curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, write_callback);
|
curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, write_callback);
|
||||||
|
if (scanner->tmp)
|
||||||
|
fclose(scanner->tmp);
|
||||||
scanner->tmp = tmpfile();
|
scanner->tmp = tmpfile();
|
||||||
if (scanner->tmp != NULL) {
|
if (scanner->tmp != NULL) {
|
||||||
curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, scanner->tmp);
|
curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, scanner->tmp);
|
||||||
CURLcode res = curl_easy_perform(curl_handle);
|
CURLcode res = curl_easy_perform(curl_handle);
|
||||||
if (res != CURLE_OK) {
|
if (res != CURLE_OK) {
|
||||||
DBG( 1, "Unable to scan: %s\n", curl_easy_strerror(res));
|
DBG( 1, "Unable to scan: %s\n", curl_easy_strerror(res));
|
||||||
|
fclose(scanner->tmp);
|
||||||
|
scanner->tmp = NULL;
|
||||||
status = SANE_STATUS_INVAL;
|
status = SANE_STATUS_INVAL;
|
||||||
|
goto cleanup;
|
||||||
}
|
}
|
||||||
fseek(scanner->tmp, 0, SEEK_SET);
|
fseek(scanner->tmp, 0, SEEK_SET);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
status = SANE_STATUS_NO_MEM;
|
status = SANE_STATUS_NO_MEM;
|
||||||
|
cleanup:
|
||||||
curl_easy_cleanup(curl_handle);
|
curl_easy_cleanup(curl_handle);
|
||||||
}
|
}
|
||||||
DBG(10, "eSCL scan : %s\n", sane_strstatus(status));
|
DBG(10, "eSCL scan : %s\n", sane_strstatus(status));
|
||||||
|
|
Ładowanie…
Reference in New Issue