many others, a complete list can be found in the file AUTHORS.
This program is Free Software; you can redistribute it and/or
modify it under the terms of version two of the GNU General Public
- License as published by the Free Software Foundation plus additions
- that are listed in the file LICENSE.
+ License as published by the Free Software Foundation and included
+ in the file LICENSE.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
struct timespec timeout;
int errstat;
+ Dsm_check(1);
Dmsg1(200, "Run_cmd: %s\n", jcr->dir_bsock->msg);
/* The following jobs don't need the FD */
switch (jcr->JobType) {
* expires.
*/
P(mutex);
- for ( ;!job_canceled(jcr); ) {
+ for ( ; !job_canceled(jcr); ) {
errstat = pthread_cond_timedwait(&jcr->job_start_wait, &mutex, &timeout);
if (errstat == 0 || errstat == ETIMEDOUT) {
break;
unbash_spaces(dev_name);
foreach_res(device, R_DEVICE) {
/* Find resource, and make sure we were able to open it */
- if (fnmatch(dev_name.c_str(), device->hdr.name, 0) == 0) {
+ if (strcmp(dev_name.c_str(), device->hdr.name) == 0) {
if (!device->dev) {
device->dev = init_dev(jcr, device);
}
}
foreach_res(changer, R_AUTOCHANGER) {
/* Find resource, and make sure we were able to open it */
- if (fnmatch(dev_name.c_str(), changer->hdr.name, 0) == 0) {
+ if (strcmp(dev_name.c_str(), changer->hdr.name) == 0) {
if (!changer->device || changer->device->size() == 0) {
continue; /* no devices */
}
}
jcr->dcrs = NULL;
+ /* Avoid a double free */
+ if (jcr->dcr == jcr->read_dcr) {
+ jcr->read_dcr = NULL;
+ }
if (jcr->dcr) {
free_dcr(jcr->dcr);
jcr->dcr = NULL;
delete jcr->write_store;
jcr->write_store = NULL;
}
+ Dsm_check(1);
return;
}