@@ -505,7 +505,7 @@ static buffer *wfs_insert_xml(ows * o, wfs_request * wr, xmlDocPtr xmldoc, xmlNo
505505 node = n -> children ;
506506
507507 /* Jump to the next element if spaces */
508- while (node -> type != XML_ELEMENT_NODE ) node = node -> next ;
508+ while (node != NULL && node -> type != XML_ELEMENT_NODE ) node = node -> next ;
509509
510510 /* Fill SQL fields and values at once */
511511 for ( /* empty */ ; node ; node = node -> next ) {
@@ -541,45 +541,48 @@ static buffer *wfs_insert_xml(ows * o, wfs_request * wr, xmlDocPtr xmldoc, xmlNo
541541 elemt = node -> children ;
542542
543543 /* Jump to the next element if spaces */
544- while (elemt -> type != XML_ELEMENT_NODE ) elemt = elemt -> next ;
545-
546- if (!strcmp ((char * ) elemt -> name , "Box" ) ||
547- !strcmp ((char * ) elemt -> name , "Envelope" )) {
548-
549- fe = filter_encoding_init ();
550- fe -> sql = fe_envelope (o , layer_name , fe , fe -> sql , elemt );
551- if (fe -> error_code != FE_NO_ERROR ) {
552- result = fill_fe_error (o , fe );
553- buffer_free (sql );
554- buffer_free (values );
555- buffer_free (column );
556- buffer_free (id );
544+ while (elemt != NULL && elemt -> type != XML_ELEMENT_NODE ) elemt = elemt -> next ;
545+ if (elemt != NULL ) {
546+ if (!strcmp ((char * ) elemt -> name , "Box" ) ||
547+ !strcmp ((char * ) elemt -> name , "Envelope" )) {
548+
549+ fe = filter_encoding_init ();
550+ fe -> sql = fe_envelope (o , layer_name , fe , fe -> sql , elemt );
551+ if (fe -> error_code != FE_NO_ERROR ) {
552+ result = fill_fe_error (o , fe );
553+ buffer_free (sql );
554+ buffer_free (values );
555+ buffer_free (column );
556+ buffer_free (id );
557+ filter_encoding_free (fe );
558+ return result ;
559+ }
560+ buffer_copy (values , fe -> sql );
557561 filter_encoding_free (fe );
558- return result ;
559- }
560- buffer_copy (values , fe -> sql );
561- filter_encoding_free (fe );
562-
563- } else if (!strcmp ((char * ) elemt -> name , "Null" )) {
564- buffer_add_str (values , "''" );
565- } else {
566- gml = ows_psql_gml_to_sql (o , elemt , srid_root );
567- if (gml ) {
568- buffer_add_str (values , "'" );
569- buffer_copy (values , gml );
570- buffer_add_str (values , "'" );
571- buffer_free (gml );
562+
563+ } else if (!strcmp ((char * ) elemt -> name , "Null" )) {
564+ buffer_add_str (values , "''" );
572565 } else {
573- buffer_free (sql );
574- buffer_free (values );
575- buffer_free (column );
576- buffer_free (id );
577- buffer_free (layer_name );
578-
579- result = buffer_from_str ("Error invalid Geometry" );
580- return result ;
566+ gml = ows_psql_gml_to_sql (o , elemt , srid_root );
567+ if (gml ) {
568+ buffer_add_str (values , "'" );
569+ buffer_copy (values , gml );
570+ buffer_add_str (values , "'" );
571+ buffer_free (gml );
572+ } else {
573+ buffer_free (sql );
574+ buffer_free (values );
575+ buffer_free (column );
576+ buffer_free (id );
577+ buffer_free (layer_name );
578+
579+ result = buffer_from_str ("Error invalid Geometry" );
580+ return result ;
581+ }
581582 }
582583 }
584+ else
585+ buffer_add_str (values , "NULL" );
583586
584587 } else values = wfs_retrieve_value (o , wr , values , xmldoc , node );
585588
0 commit comments