ObjectSets


git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@1107 59561ff5-6e30-0410-9f3c-9617f08c8826
diff --git a/libasn1parser/asn1p_expr.c b/libasn1parser/asn1p_expr.c
index b1cce69..29919a1 100644
--- a/libasn1parser/asn1p_expr.c
+++ b/libasn1parser/asn1p_expr.c
@@ -176,16 +176,31 @@
 	if(!target)
 		return NULL;	/* errno's are compatible */
 
-	if(!target->value) {
-		fprintf(stderr,
-		"FATAL: Parameterization did not resolve value reference "
-		"at line %d", ref->_lineno);
-		asn1p_expr_free(target);
+	if(target->meta_type == AMT_VALUE) {
+		if(!target->value) {
+			fprintf(stderr,
+			"FATAL: Parameterization did not resolve "
+			"value reference at line %d\n", ref->_lineno);
+			asn1p_expr_free(target);
+			errno = EPERM;
+			return NULL;
+		}
+		cval = asn1p_value_clone(target->value);
+	} else if(target->meta_type == AMT_VALUESET) {
+		if(!target->constraints) {
+			fprintf(stderr,
+			"FATAL: Parameterization did not resolve "
+			"value set reference at line %d\n", ref->_lineno);
+			asn1p_expr_free(target);
+			errno = EPERM;
+			return NULL;
+		}
+		cval = asn1p_value_fromconstr(target->constraints, 1);
+	} else {
 		errno = EPERM;
-		return NULL;
+		cval = NULL;
 	}
 
-	cval = asn1p_value_clone(target->value);
 	asn1p_expr_free(target);
 	return cval;
 }