@@ -1570,54 +1570,55 @@ pluma_gtk_text_iter_regex_search (const GtkTextIter *iter,
1570
1570
gchar * text ;
1571
1571
GtkTextIter * begin_iter ;
1572
1572
GtkTextIter * end_iter ;
1573
- gchar * * all_matches ;
1574
1573
gchar * match_string ;
1575
1574
gboolean found ;
1576
- gint non_null_result_number ;
1577
- gboolean non_null_result_found ;
1578
- guint result_size ;
1579
-
1575
+
1576
+ match_string = "" ;
1580
1577
compile_flags = 0 ;
1578
+
1581
1579
if ((flags & GTK_TEXT_SEARCH_CASE_INSENSITIVE ) != 0 )
1582
- compile_flags |= G_REGEX_CASELESS ;
1580
+ compile_flags |= G_REGEX_CASELESS ;
1583
1581
1584
1582
regex = g_regex_new (str ,compile_flags ,0 ,NULL );
1583
+
1585
1584
if (regex == NULL )
1586
1585
return FALSE;
1587
1586
1588
- begin_iter = gtk_text_iter_copy (iter );
1587
+ begin_iter = gtk_text_iter_copy (iter );
1588
+
1589
1589
if (limit == NULL )
1590
1590
{
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 )
1593
1593
{
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 );
1596
1596
}
1597
1597
else
1598
1598
{
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 );
1601
1601
}
1602
1602
}
1603
1603
else
1604
1604
{
1605
- end_iter = gtk_text_iter_copy (limit );
1605
+ end_iter = gtk_text_iter_copy (limit );
1606
1606
}
1607
1607
1608
1608
if ((flags & GTK_TEXT_SEARCH_TEXT_ONLY ) != 0 )
1609
1609
{
1610
1610
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 );
1612
1612
else
1613
- text = gtk_text_iter_get_text (begin_iter , end_iter );
1613
+ text = gtk_text_iter_get_text (begin_iter , end_iter );
1614
1614
}
1615
1615
else if ((flags & GTK_TEXT_SEARCH_VISIBLE_ONLY ) != 0 )
1616
1616
text = gtk_text_iter_get_visible_slice (begin_iter , end_iter );
1617
1617
else
1618
1618
text = gtk_text_iter_get_slice (begin_iter , end_iter );
1619
1619
1620
1620
found = g_regex_match (regex , text , 0 , & match_info );
1621
+
1621
1622
if (!found )
1622
1623
goto free_resources ;
1623
1624
@@ -1627,28 +1628,18 @@ pluma_gtk_text_iter_regex_search (const GtkTextIter *iter,
1627
1628
* replace_text ,
1628
1629
NULL );
1629
1630
}
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 );
1634
1631
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 ))
1638
1633
{
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 )
1641
1637
break ;
1642
1638
1643
- non_null_result_number += ( forward_search ) ? 1 : -1 ;
1639
+ g_match_info_next ( match_info , NULL ) ;
1644
1640
}
1645
1641
1646
- if (!non_null_result_found ) {
1647
- found = FALSE;
1648
- goto free_resources ;
1649
- }
1650
1642
1651
- match_string = all_matches [non_null_result_number ];
1652
1643
if (forward_search )
1653
1644
{
1654
1645
gtk_text_iter_forward_search (begin_iter ,
@@ -1667,8 +1658,8 @@ pluma_gtk_text_iter_regex_search (const GtkTextIter *iter,
1667
1658
}
1668
1659
1669
1660
free_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 );
1672
1663
g_match_info_free (match_info );
1673
1664
g_regex_unref (regex );
1674
1665
return found ;
0 commit comments