Description: ExpandDeRefPromise: Canonify class name IsDefinedClass function used in ExpandDeRefPromise uses non-canonified promise name for comparison. This leads to multiple errors: 'Unable to parse class expression'. Introduced with commit: b7fc59e85ebee26898f52bfff4d8aa5d4cc3c8fc Fix: use CanonifyName(pcopy->promiser) instead of pcopy->promiser to compare. --- cfengine3-3.6.1.orig/libpromises/promises.c +++ cfengine3-3.6.1/libpromises/promises.c @@ -312,10 +312,10 @@ Promise *ExpandDeRefPromise(EvalContext // if this is a class promise, check if it is already set, if so, skip if (strcmp("classes", pp->parent_promise_type->name) == 0) { - if (IsDefinedClass(ctx, pcopy->promiser)) + if (IsDefinedClass(ctx, CanonifyName(pcopy->promiser))) { Log(LOG_LEVEL_VERBOSE, "Skipping evaluation of classes promise as class '%s' is already set", - pcopy->promiser); + CanonifyName(pcopy->promiser)); if (excluded) {