@@ -247,7 +247,9 @@ function set_timer_interval(interval) {
247247}
248248
249249function reset_timer ( ) {
250- clearInterval ( timer ) ;
250+ if ( timer != null ) {
251+ clearInterval ( timer ) ;
252+ }
251253 if ( timer_interval != null ) {
252254 timer = setInterval ( partial_update , timer_interval ) ;
253255 }
@@ -726,13 +728,31 @@ function postprocess() {
726728 update_multifields ( ) ;
727729}
728730
731+ function is_valid_regexp ( value ) {
732+ try {
733+ var _ = new RegExp ( value , 'i' ) ;
734+ return true ;
735+ } catch ( e ) {
736+ return false ;
737+ }
738+ }
739+
729740function url_pagination_template_context ( template , context , defaultPage , defaultPageSize ) {
730741 var page_number_request = fmt_page_number_request ( context , defaultPage ) ;
731742 var page_size = fmt_page_size_request ( context , defaultPageSize ) ;
732743 var name_request = fmt_filter_name_request ( context , "" ) ;
733744 var use_regex = fmt_regex_request ( context , "" ) == "checked" ;
734745 if ( use_regex ) {
735- name_request = esc ( name_request ) ;
746+ // rabbitmq/rabbitmq-server#8008: if the expression cannot be compiled to a reg exp,
747+ // assume a regular text filter
748+ var valid_regexp = is_valid_regexp ( name_request ) ;
749+ if ( ! valid_regexp ) {
750+ show_popup ( 'warn' , fmt_escape_html ( `Filter expression '${ name_request } ' is not a valid regular expression, will perform a regular text query` ) ) ;
751+ use_regex = false ;
752+ }
753+ if ( use_regex && valid_regexp ) {
754+ name_request = esc ( name_request ) ;
755+ }
736756 }
737757 return '/' + template +
738758 '?page=' + page_number_request +
0 commit comments