Skip to content

Commit b53c0bb

Browse files
committed
BF: fixed memory leak in mirror subscription
// BelongsTo: CS-582
1 parent 17ac284 commit b53c0bb

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

source/libs/evc/sge_event_client.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1812,7 +1812,7 @@ ec2_remove_subscriptionElement(sge_evc_class_t *thiz, ev_event event) {
18121812
WARNING(MSG_EVENT_ILLEGALEVENTID_I, event);
18131813
} else {
18141814
lList *subscribed = lGetListRW(sge_evc->ec, EV_subscribed);
1815-
if (event != sgeE_ALL_EVENTS){
1815+
if (event != sgeE_ALL_EVENTS) {
18161816
if (subscribed) {
18171817
lListElem *sub_el = lGetElemUlongRW(subscribed, EVS_id, event);
18181818
if (sub_el) {

source/libs/mir/sge_mirror.cc

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -407,6 +407,7 @@ sge_mirror_subscribe_internal(sge_evc_class_t *evc, sge_object_type type,
407407
sge_mirror_callback callback_before, sge_mirror_callback callback_after,
408408
void *client_data, const lCondition *where, const lEnumeration *what)
409409
{
410+
sge_mirror_error ret = SGE_EM_OK;
410411
lListElem *what_el = lWhatToElem(what);
411412
lListElem *where_el = lWhereToElem(where);
412413

@@ -711,7 +712,8 @@ sge_mirror_subscribe_internal(sge_evc_class_t *evc, sge_object_type type,
711712
break;
712713
case SGE_TYPE_ZOMBIE:
713714
case SGE_TYPE_SUSER:
714-
return SGE_EM_NOT_INITIALIZED;
715+
ret = SGE_EM_NOT_INITIALIZED;
716+
break;
715717
case SGE_TYPE_AR:
716718
evc->ec_subscribe(evc, sgeE_AR_LIST);
717719
evc->ec_subscribe(evc, sgeE_AR_ADD);
@@ -725,12 +727,14 @@ sge_mirror_subscribe_internal(sge_evc_class_t *evc, sge_object_type type,
725727
}
726728
break;
727729
case SGE_TYPE_JOBSCRIPT:
728-
return SGE_EM_NOT_INITIALIZED;
730+
ret = SGE_EM_NOT_INITIALIZED;
731+
break;
729732
default:
730-
return SGE_EM_BAD_ARG;
733+
ret = SGE_EM_BAD_ARG;
734+
break;
731735
}
732736

733-
{ /* install callback function */
737+
if (ret == SGE_EM_OK) { /* install callback function */
734738
mirror_description *mirror_base = mir_get_mirror_base();
735739

736740
mirror_base[type].callback_before = callback_before;
@@ -741,7 +745,7 @@ sge_mirror_subscribe_internal(sge_evc_class_t *evc, sge_object_type type,
741745
lFreeElem(&where_el);
742746
lFreeElem(&what_el);
743747

744-
return SGE_EM_OK;
748+
return ret;
745749
}
746750

747751
/****** Eventmirror/sge_mirror_unsubscribe() ************************************

0 commit comments

Comments
 (0)