--- orig.cpp	2019-04-06 06:10:11.000000000 +0200
+++ pcb_parser.cpp	2019-04-06 08:29:09.000000000 +0200
@@ -538,9 +538,17 @@
             break;
 
         case T_gr_arc:
+            m_board->Add( parseDRAWSEGMENT(), ADD_APPEND );
+            break;
         case T_gr_circle:
+            m_board->Add( parseDRAWSEGMENT(), ADD_APPEND );
+            break;
         case T_gr_curve:
+            m_board->Add( parseDRAWSEGMENT(), ADD_APPEND );
+            break;
         case T_gr_line:
+            m_board->Add( parseDRAWSEGMENT(), ADD_APPEND );
+            break;
         case T_gr_poly:
             m_board->Add( parseDRAWSEGMENT(), ADD_APPEND );
             break;
@@ -2079,9 +2087,17 @@
             break;
 
         case T_fp_arc:
+em->SetParent( module.get() );
+break;
         case T_fp_circle:
+em->SetParent( module.get() );
+break;
         case T_fp_curve:
+em->SetParent( module.get() );
+break;
         case T_fp_line:
+em->SetParent( module.get() );
+break;
         case T_fp_poly:
             {
                 EDGE_MODULE* em = parseEDGE_MODULE();
@@ -2997,9 +3013,18 @@
             switch( token )
             {
             default:
-            case T_none:   hatchStyle = ZONE_CONTAINER::NO_HATCH;        break;
-            case T_edge:   hatchStyle = ZONE_CONTAINER::DIAGONAL_EDGE;   break;
-            case T_full:   hatchStyle = ZONE_CONTAINER::DIAGONAL_FULL;
+            case T_none:
+               foo->SetHatch();
+               hatchStyle = ZONE_CONTAINER::NO_HATCH;
+               break;
+            case T_edge:
+               foo->SetHatch();
+               hatchStyle = ZONE_CONTAINER::DIAGONAL_EDGE;
+               break;
+            case T_full:
+               foo->SetHatch();
+               hatchStyle = ZONE_CONTAINER::DIAGONAL_FULL;
+               break;
             }
 
             hatchPitch = parseBoardUnits( "hatch pitch" );
