mirror of
https://github.com/edeproject/ede.git
synced 2023-08-10 21:13:03 +03:00
Fix bug and some memleaks
This commit is contained in:
parent
56a568cc2c
commit
fac84c49a6
@ -215,7 +215,7 @@ MimeType::MimeType(const char* filename, bool usefind) {
|
|||||||
// Stuff we need to declare before goto for visibility reasons
|
// Stuff we need to declare before goto for visibility reasons
|
||||||
MimeData *m = mime_first;
|
MimeData *m = mime_first;
|
||||||
//char buffer[256];
|
//char buffer[256];
|
||||||
const char* buffer;
|
char* buffer;
|
||||||
int found=0, foundext = 0;
|
int found=0, foundext = 0;
|
||||||
MimeData *file_matches[20], *ext_matches[20] = {0}; // this is for if(!ext_matches[0])
|
MimeData *file_matches[20], *ext_matches[20] = {0}; // this is for if(!ext_matches[0])
|
||||||
|
|
||||||
@ -225,7 +225,7 @@ MimeType::MimeType(const char* filename, bool usefind) {
|
|||||||
// TODO: save cookie in a static variable
|
// TODO: save cookie in a static variable
|
||||||
magic_t cookie = magic_open(MAGIC_NONE);
|
magic_t cookie = magic_open(MAGIC_NONE);
|
||||||
magic_load(cookie, NULL);
|
magic_load(cookie, NULL);
|
||||||
buffer = magic_file(cookie, filename);
|
buffer = strdup(magic_file(cookie, filename));
|
||||||
magic_close(cookie);
|
magic_close(cookie);
|
||||||
/* const int ourpid = getpid();
|
/* const int ourpid = getpid();
|
||||||
run_program(tsprintf("%s -bLnNp '%s' >/tmp/ede-%d", GFILE, filename, ourpid));
|
run_program(tsprintf("%s -bLnNp '%s' >/tmp/ede-%d", GFILE, filename, ourpid));
|
||||||
@ -246,6 +246,7 @@ fprintf (stderr,"(%s) File said: %s (Error: %s)\n",filename,buffer,magic_error(c
|
|||||||
|
|
||||||
if (found == 1) { // one result found
|
if (found == 1) { // one result found
|
||||||
this->set_found(file_matches[0]->id);
|
this->set_found(file_matches[0]->id);
|
||||||
|
free(buffer);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -268,7 +269,11 @@ fprintf(stderr, "Max: %d\n",max);
|
|||||||
file_matches[j++] = file_matches[i];
|
file_matches[j++] = file_matches[i];
|
||||||
}
|
}
|
||||||
// Now **file_matches should contain only maximums
|
// Now **file_matches should contain only maximums
|
||||||
if (j==1) { this->set_found(file_matches[0]->id); return; }
|
if (j==1) {
|
||||||
|
this->set_found(file_matches[0]->id);
|
||||||
|
free(buffer);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Compare maximums on extension
|
// Compare maximums on extension
|
||||||
for (int i=0; i<j; i++)
|
for (int i=0; i<j; i++)
|
||||||
@ -278,12 +283,14 @@ fprintf(stderr, "Max: %d\n",max);
|
|||||||
// No extension matches - accept first result (FIXME)
|
// No extension matches - accept first result (FIXME)
|
||||||
if (foundext == 0) {
|
if (foundext == 0) {
|
||||||
this->set_found(file_matches[0]->id);
|
this->set_found(file_matches[0]->id);
|
||||||
|
free(buffer);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// From here we jump to comment " // continue extension matching"
|
// From here we jump to comment " // continue extension matching"
|
||||||
}
|
}
|
||||||
|
|
||||||
nofind:
|
nofind:
|
||||||
|
free(buffer);
|
||||||
if (!ext_matches[0]) {
|
if (!ext_matches[0]) {
|
||||||
// Try extension matching on all mimetypes
|
// Try extension matching on all mimetypes
|
||||||
// This code will be executed if:
|
// This code will be executed if:
|
||||||
|
Loading…
Reference in New Issue
Block a user