@@ -1570,54 +1570,55 @@ pluma_gtk_text_iter_regex_search (const GtkTextIter *iter,
15701570 gchar * text ;
15711571 GtkTextIter * begin_iter ;
15721572 GtkTextIter * end_iter ;
1573- gchar * * all_matches ;
15741573 gchar * match_string ;
15751574 gboolean found ;
1576- gint non_null_result_number ;
1577- gboolean non_null_result_found ;
1578- guint result_size ;
1579-
1575+
1576+ match_string = "" ;
15801577 compile_flags = 0 ;
1578+
15811579 if ((flags & GTK_TEXT_SEARCH_CASE_INSENSITIVE ) != 0 )
1582- compile_flags |= G_REGEX_CASELESS ;
1580+ compile_flags |= G_REGEX_CASELESS ;
15831581
15841582 regex = g_regex_new (str ,compile_flags ,0 ,NULL );
1583+
15851584 if (regex == NULL )
15861585 return FALSE;
15871586
1588- begin_iter = gtk_text_iter_copy (iter );
1587+ begin_iter = gtk_text_iter_copy (iter );
1588+
15891589 if (limit == NULL )
15901590 {
1591- end_iter = gtk_text_iter_copy (begin_iter );
1592- if (forward_search )
1591+ end_iter = gtk_text_iter_copy (begin_iter );
1592+ if (forward_search )
15931593 {
1594- gtk_text_buffer_get_end_iter (gtk_text_iter_get_buffer (begin_iter ),
1595- end_iter );
1594+ gtk_text_buffer_get_end_iter (gtk_text_iter_get_buffer (begin_iter ),
1595+ end_iter );
15961596 }
15971597 else
15981598 {
1599- gtk_text_buffer_get_start_iter (gtk_text_iter_get_buffer (begin_iter ),
1600- end_iter );
1599+ gtk_text_buffer_get_start_iter (gtk_text_iter_get_buffer (begin_iter ),
1600+ end_iter );
16011601 }
16021602 }
16031603 else
16041604 {
1605- end_iter = gtk_text_iter_copy (limit );
1605+ end_iter = gtk_text_iter_copy (limit );
16061606 }
16071607
16081608 if ((flags & GTK_TEXT_SEARCH_TEXT_ONLY ) != 0 )
16091609 {
16101610 if ((flags & GTK_TEXT_SEARCH_VISIBLE_ONLY ) != 0 )
1611- text = gtk_text_iter_get_visible_text (begin_iter , end_iter );
1611+ text = gtk_text_iter_get_visible_text (begin_iter , end_iter );
16121612 else
1613- text = gtk_text_iter_get_text (begin_iter , end_iter );
1613+ text = gtk_text_iter_get_text (begin_iter , end_iter );
16141614 }
16151615 else if ((flags & GTK_TEXT_SEARCH_VISIBLE_ONLY ) != 0 )
16161616 text = gtk_text_iter_get_visible_slice (begin_iter , end_iter );
16171617 else
16181618 text = gtk_text_iter_get_slice (begin_iter , end_iter );
16191619
16201620 found = g_regex_match (regex , text , 0 , & match_info );
1621+
16211622 if (!found )
16221623 goto free_resources ;
16231624
@@ -1627,28 +1628,18 @@ pluma_gtk_text_iter_regex_search (const GtkTextIter *iter,
16271628 * replace_text ,
16281629 NULL );
16291630 }
1630- all_matches = g_match_info_fetch_all (match_info );
1631-
1632- result_size = (gint ) g_strv_length (all_matches );
1633- non_null_result_number = (forward_search ) ? 0 : (result_size - 1 );
16341631
1635- non_null_result_found = FALSE;
1636- while ((non_null_result_number >= 0 )
1637- && (non_null_result_number < result_size ) )
1632+ while (g_match_info_matches (match_info ))
16381633 {
1639- non_null_result_found = g_utf8_strlen (all_matches [non_null_result_number ], G_MAXSSIZE ) != 0 ;
1640- if (non_null_result_found )
1634+ match_string = g_match_info_fetch (match_info , 0 );
1635+
1636+ if (forward_search )
16411637 break ;
16421638
1643- non_null_result_number += ( forward_search ) ? 1 : -1 ;
1639+ g_match_info_next ( match_info , NULL ) ;
16441640 }
16451641
1646- if (!non_null_result_found ) {
1647- found = FALSE;
1648- goto free_resources ;
1649- }
16501642
1651- match_string = all_matches [non_null_result_number ];
16521643 if (forward_search )
16531644 {
16541645 gtk_text_iter_forward_search (begin_iter ,
@@ -1667,8 +1658,8 @@ pluma_gtk_text_iter_regex_search (const GtkTextIter *iter,
16671658 }
16681659
16691660free_resources :
1670- gtk_text_iter_free (begin_iter );
1671- gtk_text_iter_free (end_iter );
1661+ gtk_text_iter_free (begin_iter );
1662+ gtk_text_iter_free (end_iter );
16721663 g_match_info_free (match_info );
16731664 g_regex_unref (regex );
16741665 return found ;
0 commit comments