File tree 1 file changed +9
-5
lines changed
1 file changed +9
-5
lines changed Original file line number Diff line number Diff line change @@ -727,7 +727,9 @@ def eval(term_values)
727
727
if @type == :term
728
728
ext_ret = @children [ 0 ]
729
729
term_value = term_values . find { |tv | tv . name == ext_ret . name }
730
- @children [ 0 ] . satisfied_by? ( term_value )
730
+ unless term_value . nil?
731
+ @children [ 0 ] . satisfied_by? ( term_value )
732
+ end
731
733
elsif @type == :if
732
734
cond_ext_ret = @children [ 0 ]
733
735
if cond_ext_ret . eval ( term_values )
@@ -921,15 +923,17 @@ def dnf(logic_tree)
921
923
end
922
924
923
925
def combos_for ( extension_versions )
924
- ncombos = extension_versions . reduce ( 1 ) { |prod , vers | prod * vers . size }
926
+ ncombos = extension_versions . reduce ( 1 ) { |prod , vers | prod * ( vers . size + 1 ) }
925
927
combos = [ ]
926
928
ncombos . times do |i |
927
929
combos << [ ]
928
930
extension_versions . size . times do |j |
929
- m = extension_versions [ j ] . size
930
- d = j . zero? ? 1 : extension_versions [ j ..0 ] . reduce ( 1 ) { |prod , vers | prod * vers . size }
931
+ m = ( extension_versions [ j ] . size + 1 )
932
+ d = j . zero? ? 1 : extension_versions [ j ..0 ] . reduce ( 1 ) { |prod , vers | prod * ( vers . size + 1 ) }
931
933
932
- combos . last << extension_versions [ j ] [ ( i / d ) % m ]
934
+ if ( i / d ) % m < extension_versions [ j ] . size
935
+ combos . last << extension_versions [ j ] [ ( i / d ) % m ]
936
+ end
933
937
end
934
938
end
935
939
# get rid of any combos that can't happen because of extension conflicts
You can’t perform that action at this time.
0 commit comments