diff --git a/common/lset.cpp b/common/lset.cpp index ec82da8523..a6d0e937ae 100644 --- a/common/lset.cpp +++ b/common/lset.cpp @@ -45,7 +45,10 @@ LSET::LSET( std::initializer_list aList ) : LSET() { for( PCB_LAYER_ID layer : aList ) - set( layer ); + { + if( layer > 0 ) + set( layer ); + } } @@ -53,14 +56,20 @@ LSET::LSET( const LSEQ& aSeq ) : LSET() { for( PCB_LAYER_ID layer : aSeq ) - set( layer ); + { + if( layer > 0 ) + set( layer ); + } } LSET::LSET( const LAYER_RANGE& aRange ) { for( PCB_LAYER_ID layer : aRange ) - set( layer ); + { + if( layer > 0 ) + set( layer ); + } } @@ -966,4 +975,4 @@ LSET::non_copper_layers_iterator LSET::non_copper_layers_end() const } -#endif \ No newline at end of file +#endif diff --git a/include/lset.h b/include/lset.h index cc62b1a338..02f348e71b 100644 --- a/include/lset.h +++ b/include/lset.h @@ -59,6 +59,10 @@ public: */ bool Contains( PCB_LAYER_ID aLayer ) { + // At the moment, LSET cannot store negative layers, but PCB_LAYER_ID can contain them + if( aLayer < 0 ) + return false; + try { return test( aLayer );