← Back to team overview

kicad-developers team mailing list archive

Re: bitset:set( -1 )

 

Hi Dick,

Sorry for all the troubles associated with the GAL, but surely soon it will get stable. The reason is, as you suspected - an unexpected layer in the file. I propose the patch from the attachment, I think it is better to treat unknown layers as COMMENTS. Still I am wondering - how does KiCad handle items with negative layer numbers by default? Unfortunately, there is one more bug that offsets module drawings (it is visible with the board you had sent), I will take care of that tommorrow.

Regards,
Orson

On 11/02/2013 01:48 AM, Dick Hollenbeck wrote:
Orson,

I found a bug which fires the new assert I added in line 372 of include/view/view_item.h

The aLayer element at index zero is -1, and fires a bitset:set() std:exception.  I also
added a catch somewhere to keep the program from crashing on other similar issues.

The bug is fired by loading an eagle board from EAGLE_PLUGIN::Load().  Load() succeeds.
But in SetBoard() we go into the VIEW setup stuff and get into trouble.

Maybe there is a layer in this eagle board you are not expecting?  Once I ignored the
exception the board displays OK in wxDC mode.  Previous to that it was a bear to find,
since nobody was in position to catch a std::exception.


Attached is the eagle board.  Any help is appreciated.  I don't think you need eagle
binaries to do the load, just select pcbnew's EAGLE_PLUGIN as you load a new board into KiCad.


Dick



_______________________________________________
Mailing list: https://launchpad.net/~kicad-developers
Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


=== modified file 'pcbnew/eagle_plugin.cpp'
--- pcbnew/eagle_plugin.cpp	2013-11-02 00:24:38 +0000
+++ pcbnew/eagle_plugin.cpp	2013-11-03 20:01:55 +0000
@@ -2681,8 +2681,8 @@
         case 95:    kiLayer = ECO1_N;               break;
         case 96:    kiLayer = ECO2_N;               break;
         default:
-//            D( printf( "unsupported eagle layer: %d\n", aEagleLayer );)
-            kiLayer = -1;       break;  // some layers do not map to KiCad
+            // DBG( printf( "unsupported eagle layer: %d\n", aEagleLayer );)
+            kiLayer = COMMENT_N;       break;  // some layers do not map to KiCad
         }
     }

Follow ups

References