← Back to team overview

kicad-developers team mailing list archive

Re: gerbview on macOS path issue for job files

 

OK, got the crash bug too.

On Sun, Feb 25, 2018 at 8:12 PM, Jon Evans <jon@xxxxxxxxxxxxx> wrote:

> I'm still trying to debug the crash, but the attached patch should fix the
> files not found issue.
>
> On Sun, Feb 25, 2018 at 7:16 PM, Andy Peters <devel@xxxxxxxxx> wrote:
>
>>
>>
>> On Feb 25, 2018, at 5:11 PM, Jon Evans <jon@xxxxxxxxxxxxx> wrote:
>>
>> Hmm, can't reproduce on Linux (when loading job file, it successfully
>> finds the Gerbers in the same directory as the job file)
>>
>> Do you have the ability to build a debug build and get a stack trace of
>> the crash?
>>
>>
>> -Jon
>>
>>
>> Dunno if this is helpful, but attached is the stack trace report that can
>> be sent to Apple upon a crash. (unzip, it’s text).
>>
>> -a
>>
>>
>>
>>
>> On Sun, Feb 25, 2018 at 7:02 PM, Andy Peters <devel@xxxxxxxxx> wrote:
>>
>>> On macOS High Sierra, latest updates.
>>>
>>> I want to send boards out to fab and I’m checking Gerbers. When
>>> generating the files, I check the “create job file” option.
>>>
>>> I launch GerbView from the Kicad project manager. From the GerbView
>>> menu, I choose “Load Gerber Job File.” The File Open dialog box starts in
>>> my project’s directory (good!). The Gerbers are in the Gerber/ subdirectory
>>> of my project, so I mouse to that, and select the .gbrjob file.
>>>
>>> Upon opening, I’m greeted with a Warning message box:
>>>
>>> File “/Applications/Kicad/myproj-F.Cu.gtl” not found.
>>>
>>> Click OK, GerbView crashes and generates a report to send to Apple. This
>>> is repeatable.
>>>
>>> I look in the job file. There are no paths for any of the Gerber files.
>>> So why does GerbView assume that the files are in the application
>>> installation directory?
>>>
>>> GerbView will happily open individual files. But the job file parsing
>>> logic is broken.
>>>
>>> -a
>>>
>>>
>>> Application: kicad
>>> Version: (5.0-dev-4161-g9483960), release build
>>> Libraries:
>>>     wxWidgets 3.0.4
>>>     libcurl/7.54.0 LibreSSL/2.0.20 zlib/1.2.11 nghttp2/1.24.0
>>> Platform: Mac OS X (Darwin 17.4.0 x86_64), 64 bit, Little endian, wxMac
>>> Build Info:
>>>     wxWidgets: 3.0.4 (UTF-8,STL containers,compatible with 2.8)
>>>     Boost: 1.61.0
>>>     Curl: 7.43.0
>>>     Compiler: Clang 7.3.0 with C++ ABI 1002
>>>
>>> Build settings:
>>>     USE_WX_GRAPHICS_CONTEXT=ON
>>>     USE_WX_OVERLAY=ON
>>>     KICAD_SCRIPTING=ON
>>>     KICAD_SCRIPTING_MODULES=ON
>>>     KICAD_SCRIPTING_WXPYTHON=ON
>>>     KICAD_SCRIPTING_ACTION_MENU=ON
>>>     BUILD_GITHUB_PLUGIN=ON
>>>     KICAD_USE_OCE=ON
>>>     KICAD_SPICE=ON
>>>
>>>
>>> _______________________________________________
>>> 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
>>>
>>
>>
>> Andy Peters
>> 5511 E Rosewood St
>> Tucson, AZ 85711
>> 520-907-2262 <(520)%20907-2262>
>> devel@xxxxxxxxx
>>
>>
>>
>>
>> _______________________________________________
>> 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
>>
>>
>
From 7f60d460a12524901eccc293a9f1adedc88a4546 Mon Sep 17 00:00:00 2001
From: Jon Evans <jon@xxxxxxxxxxxxx>
Date: Sun, 25 Feb 2018 20:22:49 -0500
Subject: [PATCH] Fix edge case GERBER_FILE_IMAGE creation logic

---
 gerbview/readgerb.cpp | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/gerbview/readgerb.cpp b/gerbview/readgerb.cpp
index f3209bf5c..4e630c05b 100644
--- a/gerbview/readgerb.cpp
+++ b/gerbview/readgerb.cpp
@@ -45,16 +45,14 @@ bool GERBVIEW_FRAME::Read_GERBER_File( const wxString& GERBER_FullFileName )
     GERBER_FILE_IMAGE_LIST* images = GetImagesList();
     GERBER_FILE_IMAGE* gerber = GetGbrImage( layer );
 
-    if( gerber == NULL )
-    {
-        gerber = new GERBER_FILE_IMAGE( layer );
-        images->AddGbrImage( gerber, layer );
-    }
-    else
+    if( gerber != NULL )
     {
         Erase_Current_DrawLayer( false );
     }
 
+    gerber = new GERBER_FILE_IMAGE( layer );
+    images->AddGbrImage( gerber, layer );
+
     /* Read the gerber file */
     bool success = gerber->LoadGerberFile( GERBER_FullFileName );
 
-- 
2.14.1


References