changeset 26561:a595c22464e4

maint: Merge stable to default.
author John W. Eaton <jwe@octave.org>
date Wed, 16 Jan 2019 14:25:59 -0500
parents 4744a878c43f (current diff) 8953dd219f4c (diff)
children 8bed6950ddde
files libgui/src/m-editor/file-editor-tab.cc libgui/src/m-editor/file-editor.cc libinterp/dldfcn/audiodevinfo.cc test/bug-54995/@testclass/subsref.m test/bug-54995/@testclass/testclass.m
diffstat 17 files changed, 182 insertions(+), 141 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/graphics/__init_qt__.cc	Tue Jan 15 20:01:49 2019 -0800
+++ b/libgui/graphics/__init_qt__.cc	Wed Jan 16 14:25:59 2019 -0500
@@ -57,6 +57,8 @@
           {
             gh_manager::auto_lock lock;
 
+            interp.mlock ();
+
             qRegisterMetaType<graphics_object> ("graphics_object");
 
             gh_manager::enable_event_processing (true);
--- a/libgui/qterminal/libqterminal/unix/History.cpp	Tue Jan 15 20:01:49 2019 -0800
+++ b/libgui/qterminal/libqterminal/unix/History.cpp	Wed Jan 16 14:25:59 2019 -0500
@@ -245,7 +245,7 @@
 	if (!index.isMapped())
 			index.map();
 	
-	int res;
+	int res = 0;
     index.get((unsigned char*)&res,sizeof(int),(lineno-1)*sizeof(int));
     return res;
     }
--- a/libgui/src/documentation.cc	Tue Jan 15 20:01:49 2019 -0800
+++ b/libgui/src/documentation.cc	Wed Jan 16 14:25:59 2019 -0500
@@ -740,7 +740,6 @@
             QMessageBox::warning (this, tr ("Octave Documentation"),
                                   tr ("Unable to register help file %1.").
                                   arg (qch));
-            do_setup = false;
             return;
           }
 
--- a/libgui/src/m-editor/file-editor-tab.cc	Tue Jan 15 20:01:49 2019 -0800
+++ b/libgui/src/m-editor/file-editor-tab.cc	Wed Jan 16 14:25:59 2019 -0500
@@ -1929,7 +1929,6 @@
     if (count_cr > count_max)
       {
         eol_mode = QsciScintilla::EolMac;
-        count_max = count_cr;
       }
 
     return eol_mode;
--- a/libgui/src/m-editor/file-editor.cc	Tue Jan 15 20:01:49 2019 -0800
+++ b/libgui/src/m-editor/file-editor.cc	Wed Jan 16 14:25:59 2019 -0500
@@ -237,9 +237,7 @@
                     // editor is in this tab widget
                     in_tab = true;
                     int top = tab->currentIndex ();
-                    if (top > -1 && tab->tabText (top) == windowTitle ())
-                      real_visible = true;  // and is the current tab
-                    else
+                    if (! (top > -1 && tab->tabText (top) == windowTitle ()))
                       return; // not current tab -> not visible
                   }
                 j++;
--- a/libgui/src/main-window.cc	Tue Jan 15 20:01:49 2019 -0800
+++ b/libgui/src/main-window.cc	Wed Jan 16 14:25:59 2019 -0500
@@ -361,9 +361,12 @@
         // signal to all dock widgets for updating the style
         emit active_dock_changed (m_active_dock, dock);
 
-        QList<QDockWidget *> tabbed = tabifiedDockWidgets (dock);
-        if (tabbed.contains (m_active_dock))
-          dock->set_predecessor_widget (m_active_dock);
+        if (dock)
+          {
+            QList<QDockWidget *> tabbed = tabifiedDockWidgets (dock);
+            if (tabbed.contains (m_active_dock))
+              dock->set_predecessor_widget (m_active_dock);
+          }
 
         if (edit_dock_widget == dock)
           emit editor_focus_changed (true);
--- a/libgui/src/variable-editor.cc	Tue Jan 15 20:01:49 2019 -0800
+++ b/libgui/src/variable-editor.cc	Wed Jan 16 14:25:59 2019 -0500
@@ -665,8 +665,6 @@
       {
         selectColumn (index);
         column_selection_count = 1;
-        current_column_selected = true;
-        whole_columns_selected = true;
       }
 
     QString column_string
@@ -715,8 +713,6 @@
       {
         selectRow (index);
         rowselection_count = 1;
-        current_row_selected = true;
-        whole_rows_selected = true;
       }
 
     QString row_string = tr (rowselection_count > 1 ? " rows" : " row");
--- a/libinterp/dldfcn/__glpk__.cc	Tue Jan 15 20:01:49 2019 -0800
+++ b/libinterp/dldfcn/__glpk__.cc	Wed Jan 16 14:25:59 2019 -0500
@@ -286,14 +286,14 @@
                 redcosts[i] = glp_ipt_col_dual (lp, i+1);
             }
         }
+    }
 
-      *time = (clock () - t_start) / CLOCKS_PER_SEC;
-    }
+  *time = (clock () - t_start) / CLOCKS_PER_SEC;
 
   glp_delete_prob (lp);
   // Request that GLPK free all memory resources.
   // This prevents reported memory leaks, but isn't strictly necessary.
-  // The memory blocks use are allocated once and don't grow with further
+  // The memory blocks used are allocated once and don't grow with further
   // calls to glpk so they would be reclaimed anyways when Octave exits.
   glp_free_env ();
 
--- a/libinterp/dldfcn/audiodevinfo.cc	Tue Jan 15 20:01:49 2019 -0800
+++ b/libinterp/dldfcn/audiodevinfo.cc	Wed Jan 16 14:25:59 2019 -0500
@@ -41,6 +41,7 @@
 #include "defun-dld.h"
 #include "error.h"
 #include "errwarn.h"
+#include "interpreter.h"
 #include "oct-map.h"
 #include "ov-int32.h"
 #include "ov.h"
@@ -1816,8 +1817,8 @@
 
 #endif
 
-DEFUN_DLD (__recorder_audiorecorder__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__recorder_audiorecorder__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn  {} {@var{recorder} =} __recorder_audiorecorder__ (@var{fs}, @var{nbits}, @var{channels})
 @deftypefnx {} {@var{recorder} =} __recorder_audiorecorder__ (@var{fs}, @var{nbits}, @var{channels}, @var{id})
 @deftypefnx {} {@var{recorder} =} __recorder_audiorecorder__ (@var{fcn}, @dots{})
@@ -1833,6 +1834,8 @@
                         "audio playback and recording through PortAudio");
 #else
 
+  interp.mlock ();
+
   int nargin = args.length ();
 
   audiorecorder *recorder = new audiorecorder ();
@@ -1869,8 +1872,10 @@
 #if defined (HAVE_PORTAUDIO)
 
 static audiorecorder *
-get_recorder (const octave_value& ov)
+get_recorder (octave::interpreter& interp, const octave_value& ov)
 {
+  interp.mlock ();
+
   const octave_base_value& rep = ov.get_rep ();
 
   octave_base_value *ncrep = const_cast<octave_base_value *> (&rep);
@@ -1884,235 +1889,248 @@
 
 #endif
 
-DEFUN_DLD (__recorder_getaudiodata__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__recorder_getaudiodata__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn {} {@var{data} =} __recorder_getaudiodata__ (@var{recorder})
 Undocumented internal function.
 @end deftypefn */)
 {
   octave_value retval;
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__recorder_getaudiodata__",
                         "audio playback and recording through PortAudio");
 #else
-  retval = get_recorder (args(0))->getaudiodata ();
+  retval = get_recorder (interp, args(0))->getaudiodata ();
 #endif
   return retval;
 }
 
-DEFUN_DLD (__recorder_get_channels__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__recorder_get_channels__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn {} {@var{n} =} __recorder_get_channels__ (@var{recorder})
 Undocumented internal function.
 @end deftypefn */)
 {
   octave_value retval;
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__recorder_get_channels__",
                         "audio playback and recording through PortAudio");
 #else
-  retval = get_recorder (args(0))->get_channels ();
+  retval = get_recorder (interp, args(0))->get_channels ();
 #endif
   return retval;
 }
 
-DEFUN_DLD (__recorder_get_fs__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__recorder_get_fs__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn {} {@var{fs} =} __recorder_get_fs__ (@var{recorder})
 Undocumented internal function.
 @end deftypefn */)
 {
   octave_value retval;
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__recorder_get_fs__",
                         "audio playback and recording through PortAudio");
 #else
-  retval = get_recorder (args(0))->get_fs ();
+  retval = get_recorder (interp, args(0))->get_fs ();
 #endif
   return retval;
 }
 
-DEFUN_DLD (__recorder_get_id__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__recorder_get_id__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn {} {@var{id} =} __recorder_get_id__ (@var{recorder})
 Undocumented internal function.
 @end deftypefn */)
 {
   octave_value retval;
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__recorder_get_id__",
                         "audio playback and recording through PortAudio");
 #else
-  retval = get_recorder (args(0))->get_id ();
+  retval = get_recorder (interp, args(0))->get_id ();
 #endif
   return retval;
 }
 
-DEFUN_DLD (__recorder_get_nbits__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__recorder_get_nbits__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn {} {@var{nbits} =} __recorder_get_nbits__ (@var{recorder})
 Undocumented internal function.
 @end deftypefn */)
 {
   octave_value retval;
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__recorder_get_nbits__",
                         "audio playback and recording through PortAudio");
 #else
-  retval = get_recorder (args(0))->get_nbits ();
+  retval = get_recorder (interp, args(0))->get_nbits ();
 #endif
   return retval;
 }
 
-DEFUN_DLD (__recorder_get_sample_number__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__recorder_get_sample_number__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn {} {@var{n} =} __recorder_get_sample_number__ (@var{recorder})
 Undocumented internal function.
 @end deftypefn */)
 {
   octave_value retval;
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__recorder_get_sample_number__",
                         "audio playback and recording through PortAudio");
 #else
-  retval = get_recorder (args(0))->get_sample_number ();
+  retval = get_recorder (interp, args(0))->get_sample_number ();
 #endif
   return retval;
 }
 
-DEFUN_DLD (__recorder_get_tag__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__recorder_get_tag__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn {} {@var{tag} =} __recorder_get_tag__ (@var{recorder})
 Undocumented internal function.
 @end deftypefn */)
 {
   octave_value retval;
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__recorder_get_tag__",
                         "audio playback and recording through PortAudio");
 #else
-  retval = get_recorder (args(0))->get_tag ();
+  retval = get_recorder (interp, args(0))->get_tag ();
 #endif
   return retval;
 }
 
-DEFUN_DLD (__recorder_get_total_samples__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__recorder_get_total_samples__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn {} {@var{n} =} __recorder_get_total_samples__ (@var{recorder})
 Undocumented internal function.
 @end deftypefn */)
 {
   octave_value retval;
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__recorder_get_total_samples__",
                         "audio playback and recording through PortAudio");
 #else
-  retval = get_recorder (args(0))->get_total_samples ();
+  retval = get_recorder (interp, args(0))->get_total_samples ();
 #endif
   return retval;
 }
 
-DEFUN_DLD (__recorder_get_userdata__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__recorder_get_userdata__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn {} {@var{data} =} __recorder_get_userdata__ (@var{recorder})
 Undocumented internal function.
 @end deftypefn */)
 {
   octave_value retval;
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__recorder_get_userdata__",
                         "audio playback and recording through PortAudio");
 #else
-  retval = get_recorder (args(0))->get_userdata ();
+  retval = get_recorder (interp, args(0))->get_userdata ();
 #endif
   return retval;
 }
 
-DEFUN_DLD (__recorder_isrecording__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__recorder_isrecording__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn {} {} __recorder_isrecording__ (@var{recorder})
 Undocumented internal function.
 @end deftypefn */)
 {
   octave_value retval;
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__recorder_isrecording__",
                         "audio playback and recording through PortAudio");
 #else
-  retval = get_recorder (args(0))->isrecording ();
+  retval = get_recorder (interp, args(0))->isrecording ();
 #endif
   return retval;
 }
 
-DEFUN_DLD (__recorder_pause__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__recorder_pause__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn {} {} __recorder_pause__ (@var{recorder})
 Undocumented internal function.
 @end deftypefn */)
 {
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__recorder_pause__",
                         "audio playback and recording through PortAudio");
 #else
-  get_recorder (args(0))->pause ();
+  get_recorder (interp, args(0))->pause ();
   return ovl ();
 #endif
 }
 
-DEFUN_DLD (__recorder_recordblocking__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__recorder_recordblocking__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn {} {} __recorder_recordblocking__ (@var{recorder}, @var{seconds})
 Undocumented internal function.
 @end deftypefn */)
 {
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__recorder_recordblocking__",
                         "audio playback and recording through PortAudio");
 #else
   float seconds = args(1).float_value ();
-  get_recorder (args(0))->recordblocking (seconds);
+  get_recorder (interp, args(0))->recordblocking (seconds);
   return ovl ();
 #endif
 }
 
-DEFUN_DLD (__recorder_record__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__recorder_record__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn  {} {} __recorder_record__ (@var{recorder})
 @deftypefnx {} {} __recorder_record__ (@var{recorder}, @var{seconds})
 Undocumented internal function.
 @end deftypefn */)
 {
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__recorder_record__",
                         "audio playback and recording through PortAudio");
 #else
-  audiorecorder *recorder = get_recorder (args(0));
+  audiorecorder *recorder = get_recorder (interp, args(0));
 
   if (args.length () == 2)
     recorder->set_end_sample (args(1).int_value () * recorder->get_fs ());
@@ -2122,98 +2140,103 @@
 #endif
 }
 
-DEFUN_DLD (__recorder_resume__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__recorder_resume__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn {} {} __recorder_resume__ (@var{recorder})
 Undocumented internal function.
 @end deftypefn */)
 {
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__recorder_resume__",
                         "audio playback and recording through PortAudio");
 #else
   if (args.length () == 1)
-    get_recorder (args(0))->resume ();
+    get_recorder (interp, args(0))->resume ();
   return ovl ();
 #endif
 }
 
-DEFUN_DLD (__recorder_set_fs__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__recorder_set_fs__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn {} {} __recorder_set_fs__ (@var{recorder}, @var{fs})
 Undocumented internal function.
 @end deftypefn */)
 {
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__recorder_set_fs__",
                         "audio playback and recording through PortAudio");
 #else
   if (args.length () == 2)
-    get_recorder (args(0))->set_fs (args(1).int_value ());
+    get_recorder (interp, args(0))->set_fs (args(1).int_value ());
   return ovl ();
 #endif
 }
 
-DEFUN_DLD (__recorder_set_tag__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__recorder_set_tag__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn {} {} __recorder_set_tag__ (@var{recorder}, @var{tag})
 Undocumented internal function.
 @end deftypefn */)
 {
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__recorder_set_tag__",
                         "audio playback and recording through PortAudio");
 #else
   if (args.length () == 2)
-    get_recorder (args(0))->set_tag (args(1).char_matrix_value ());
+    get_recorder (interp, args(0))->set_tag (args(1).char_matrix_value ());
   return ovl ();
 #endif
 }
 
-DEFUN_DLD (__recorder_set_userdata__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__recorder_set_userdata__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn {} {} __recorder_set_userdata__ (@var{recorder}, @var{data})
 Undocumented internal function.
 @end deftypefn */)
 {
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__recorder_set_userdata__",
                         "audio playback and recording through PortAudio");
 #else
   if (args.length () == 2)
-    get_recorder (args(0))->set_userdata (args(1));
+    get_recorder (interp, args(0))->set_userdata (args(1));
   return ovl ();
 #endif
 }
 
-DEFUN_DLD (__recorder_stop__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__recorder_stop__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn {} {} __recorder_stop__ (@var{recorder})
 Undocumented internal function.
 @end deftypefn */)
 {
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__recorder_stop__",
                         "audio playback and recording through PortAudio");
 #else
   if (args.length () == 1)
-    get_recorder (args(0))->stop ();
+    get_recorder (interp, args(0))->stop ();
   return ovl ();
 #endif
 }
 
-DEFUN_DLD (__player_audioplayer__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__player_audioplayer__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn  {} {@var{player} =} __player_audioplayer__ (@var{y}, @var{fs})
 @deftypefnx {} {@var{player} =} __player_audioplayer__ (@var{y}, @var{fs}, @var{nbits})
 @deftypefnx {} {@var{player} =} __player_audioplayer__ (@var{y}, @var{fs}, @var{nbits}, @var{id})
@@ -2222,11 +2245,13 @@
 {
   octave_value retval;
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__player_audioplayer__",
                         "audio playback and recording through PortAudio");
 #else
+  interp.mlock ();
 
   audioplayer *recorder = new audioplayer ();
 
@@ -2264,8 +2289,10 @@
 #if defined (HAVE_PORTAUDIO)
 
 static audioplayer *
-get_player (const octave_value& ov)
+get_player (octave::interpreter& interp, const octave_value& ov)
 {
+  interp.mlock ();
+
   const octave_base_value& rep = ov.get_rep ();
 
   octave_base_value *ncrep = const_cast<octave_base_value *> (&rep);
@@ -2279,197 +2306,207 @@
 
 #endif
 
-DEFUN_DLD (__player_get_channels__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__player_get_channels__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn {} {@var{n} =} __player_get_channels__ (@var{player})
 Undocumented internal function.
 @end deftypefn */)
 {
   octave_value retval;
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__player_get_channels__",
                         "audio playback and recording through PortAudio");
 #else
   if (args.length () == 1)
-    retval = get_player (args(0))->get_channels ();
+    retval = get_player (interp, args(0))->get_channels ();
 #endif
   return retval;
 }
 
-DEFUN_DLD (__player_get_fs__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__player_get_fs__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn {} {@var{fs} =} __player_get_fs__ (@var{player})
 Undocumented internal function.
 @end deftypefn */)
 {
   octave_value retval;
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__player_get_fs__",
                         "audio playback and recording through PortAudio");
 #else
   if (args.length () == 1)
-    retval = get_player (args(0))->get_fs ();
+    retval = get_player (interp, args(0))->get_fs ();
 #endif
   return retval;
 }
 
-DEFUN_DLD (__player_get_id__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__player_get_id__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn {} {@var{id} =} __player_get_id__ (@var{player})
 Undocumented internal function.
 @end deftypefn */)
 {
   octave_value retval;
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__player_get_id__",
                         "audio playback and recording through PortAudio");
 #else
   if (args.length () == 1)
-    retval = get_player (args(0))->get_id ();
+    retval = get_player (interp, args(0))->get_id ();
 #endif
   return retval;
 }
 
-DEFUN_DLD (__player_get_nbits__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__player_get_nbits__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn {} {@var{nbits} =} __player_get_nbits__ (@var{player})
 Undocumented internal function.
 @end deftypefn */)
 {
   octave_value retval;
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__player_get_nbits__",
                         "audio playback and recording through PortAudio");
 #else
   if (args.length () == 1)
-    retval = get_player (args(0))->get_nbits ();
+    retval = get_player (interp, args(0))->get_nbits ();
 #endif
   return retval;
 }
 
-DEFUN_DLD (__player_get_sample_number__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__player_get_sample_number__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn {} {@var{n} =} __player_get_sample_number__ (@var{player})
 Undocumented internal function.
 @end deftypefn */)
 {
   octave_value retval;
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__player_get_sample_number__",
                         "audio playback and recording through PortAudio");
 #else
   if (args.length () == 1)
-    retval = get_player (args(0))->get_sample_number ();
+    retval = get_player (interp, args(0))->get_sample_number ();
 #endif
   return retval;
 }
 
-DEFUN_DLD (__player_get_tag__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__player_get_tag__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn {} {@var{tag} =} __player_get_tag__ (@var{player})
 Undocumented internal function.
 @end deftypefn */)
 {
   octave_value retval;
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__player_get_tag__",
                         "audio playback and recording through PortAudio");
 #else
   if (args.length () == 1)
-    retval = get_player (args(0))->get_tag ();
+    retval = get_player (interp, args(0))->get_tag ();
 #endif
   return retval;
 }
 
-DEFUN_DLD (__player_get_total_samples__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__player_get_total_samples__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn {} {@var{n} =} __player_get_total_samples__ (@var{player})
 Undocumented internal function.
 @end deftypefn */)
 {
   octave_value retval;
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__player_get_total_samples__",
                         "audio playback and recording through PortAudio");
 #else
   if (args.length () == 1)
-    retval = get_player (args(0))->get_total_samples ();
+    retval = get_player (interp, args(0))->get_total_samples ();
 #endif
   return retval;
 }
 
-DEFUN_DLD (__player_get_userdata__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__player_get_userdata__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn {} {@var{data} =} __player_get_userdata__ (@var{player})
 Undocumented internal function.
 @end deftypefn */)
 {
   octave_value retval;
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__player_get_userdata__",
                         "audio playback and recording through PortAudio");
 #else
   if (args.length () == 1)
-    retval = get_player (args(0))->get_userdata ();
+    retval = get_player (interp, args(0))->get_userdata ();
 #endif
   return retval;
 }
 
-DEFUN_DLD (__player_isplaying__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__player_isplaying__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn {} {} __player_isplaying__ (@var{player})
 Undocumented internal function.
 @end deftypefn */)
 {
   octave_value retval;
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__player_isplaying__",
                         "audio playback and recording through PortAudio");
 #else
   if (args.length () == 1)
-    retval = get_player (args(0))->isplaying ();
+    retval = get_player (interp, args(0))->isplaying ();
 #endif
   return retval;
 }
 
-DEFUN_DLD (__player_pause__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__player_pause__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn {} {} __player_pause__ (@var{player})
 Undocumented internal function.
 @end deftypefn */)
 {
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__player_pause__",
                         "audio playback and recording through PortAudio");
 #else
   if (args.length () == 1)
-    get_player (args(0))->pause ();
+    get_player (interp, args(0))->pause ();
   return ovl ();
 #endif
 }
 
-DEFUN_DLD (__player_playblocking__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__player_playblocking__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn  {} {} __player_playblocking__ (@var{player})
 @deftypefnx {} {} __player_playblocking__ (@var{player}, @var{start})
 @deftypefnx {} {} __player_playblocking__ (@var{player}, [@var{start}, @var{end}])
@@ -2477,13 +2514,14 @@
 @end deftypefn */)
 {
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__player_playblocking__",
                         "audio playback and recording through PortAudio");
 #else
 
-  audioplayer *player = get_player (args(0));
+  audioplayer *player = get_player (interp, args(0));
 
   if (args.length () == 1)
     {
@@ -2522,8 +2560,8 @@
 #endif
 }
 
-DEFUN_DLD (__player_play__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__player_play__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn  {} {} __player_play__ (@var{player})
 @deftypefnx {} {} __player_play__ (@var{player}, @var{start})
 @deftypefnx {} {} __player_play__ (@var{player}, [@var{start}, @var{end}])
@@ -2531,6 +2569,7 @@
 @end deftypefn */)
 {
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__player_play__",
@@ -2539,11 +2578,11 @@
 
   if (args.length () == 1)
     {
-      get_player (args(0))->play ();
+      get_player (interp, args(0))->play ();
     }
   else if (args.length () == 2)
     {
-      audioplayer *player = get_player (args(0));
+      audioplayer *player = get_player (interp, args(0));
 
       if (args(1).is_matrix_type ())
         {
@@ -2576,92 +2615,97 @@
 #endif
 }
 
-DEFUN_DLD (__player_resume__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__player_resume__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn {} {} __player_resume__ (@var{player})
 Undocumented internal function.
 @end deftypefn */)
 {
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__player_resume__",
                         "audio playback and recording through PortAudio");
 #else
   if (args.length () == 1)
-    get_player (args(0))->resume ();
+    get_player (interp, args(0))->resume ();
   return ovl ();
 #endif
 }
 
-DEFUN_DLD (__player_set_fs__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__player_set_fs__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn {} {} __player_set_fs__ (@var{player}, @var{fs})
 Undocumented internal function.
 @end deftypefn */)
 {
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__player_set_fs__",
                         "audio playback and recording through PortAudio");
 #else
   if (args.length () == 2)
-    get_player (args(0))->set_fs (args(1).int_value ());
+    get_player (interp, args(0))->set_fs (args(1).int_value ());
   return ovl ();
 #endif
 }
 
-DEFUN_DLD (__player_set_tag__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__player_set_tag__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn {} {} __player_set_tag__ (@var{player}, @var{tag})
 Undocumented internal function.
 @end deftypefn */)
 {
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__player_set_tag__",
                         "audio playback and recording through PortAudio");
 #else
   if (args.length () == 2)
-    get_player (args(0))->set_tag (args(1).char_matrix_value ());
+    get_player (interp, args(0))->set_tag (args(1).char_matrix_value ());
   return ovl ();
 #endif
 }
 
-DEFUN_DLD (__player_set_userdata__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__player_set_userdata__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn {} {} __player_set_userdata__ (@var{player}, @var{data})
 Undocumented internal function.
 @end deftypefn */)
 {
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__player_set_userdata__",
                         "audio playback and recording through PortAudio");
 #else
   if (args.length () == 2)
-    get_player (args(0))->set_userdata (args(1));
+    get_player (interp, args(0))->set_userdata (args(1));
   return ovl ();
 #endif
 }
 
-DEFUN_DLD (__player_stop__, args, ,
-           doc: /* -*- texinfo -*-
+DEFMETHOD_DLD (__player_stop__, interp, args, ,
+               doc: /* -*- texinfo -*-
 @deftypefn {} {} __player_stop__ (@var{player})
 Undocumented internal function.
 @end deftypefn */)
 {
 #if ! defined (HAVE_PORTAUDIO)
+  octave_unused_parameter (interp);
   octave_unused_parameter (args);
 
   err_disabled_feature ("__player_stop__",
                         "audio playback and recording through PortAudio");
 #else
   if (args.length () == 1)
-    get_player (args(0))->stop ();
+    get_player (interp, args(0))->stop ();
   return ovl ();
 #endif
 }
--- a/libinterp/parse-tree/pt-jit.cc	Tue Jan 15 20:01:49 2019 -0800
+++ b/libinterp/parse-tree/pt-jit.cc	Wed Jan 16 14:25:59 2019 -0500
@@ -69,7 +69,7 @@
 // In LLVM <= 3.9, only one header for bitcode read/writer
 #  include <llvm/Bitcode/ReaderWriter.h>
 #else
-// Satrting with LLVM 4.0, two separate headers
+// Starting with LLVM 4.0, two separate headers
 #  include <llvm/Bitcode/BitcodeReader.h>
 #  include <llvm/Bitcode/BitcodeWriter.h>
 #endif
--- a/liboctave/array/Range.cc	Tue Jan 15 20:01:49 2019 -0800
+++ b/liboctave/array/Range.cc	Wed Jan 16 14:25:59 2019 -0500
@@ -599,7 +599,7 @@
 double
 Range::limit_internal (void) const
 {
-  double new_limit = rng_limit;
+  double new_limit;
 
   if (rng_inc > 0)
     new_limit = max ();
--- a/test/bug-54995/@testclass/subsref.m	Tue Jan 15 20:01:49 2019 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-function val = subsref (obj, S)
-  val = builtin ("subsref", obj, S);
-endfunction
--- a/test/bug-54995/@testclass/testclass.m	Tue Jan 15 20:01:49 2019 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-function obj = testclass ()
-  obj = struct ("x", eye (4));
-  obj = class(obj, "testclass");
-endfunction
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/bug-54995/@testclass54995/subsref.m	Wed Jan 16 14:25:59 2019 -0500
@@ -0,0 +1,3 @@
+function val = subsref (obj, S)
+  val = builtin ("subsref", obj, S);
+endfunction
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/bug-54995/@testclass54995/testclass54995.m	Wed Jan 16 14:25:59 2019 -0500
@@ -0,0 +1,4 @@
+function obj = testclass54995 ()
+  obj = struct ("x", eye (4));
+  obj = class(obj, "testclass54995");
+endfunction
--- a/test/bug-54995/bug-54995.tst	Tue Jan 15 20:01:49 2019 -0800
+++ b/test/bug-54995/bug-54995.tst	Wed Jan 16 14:25:59 2019 -0500
@@ -1,4 +1,4 @@
-## Copyright (C) 2018 Guillaume Flandin
+## Copyright (C) 2018-2019 Guillaume Flandin
 ##
 ## This file is part of Octave.
 ##
@@ -17,5 +17,5 @@
 ## <https://www.gnu.org/licenses/>.
 
 %!test <*54995>
-%! obj = testclass ();
+%! obj = testclass54995 ();
 %! assert (obj.x(1), 1);
--- a/test/bug-54995/module.mk	Tue Jan 15 20:01:49 2019 -0800
+++ b/test/bug-54995/module.mk	Wed Jan 16 14:25:59 2019 -0500
@@ -1,6 +1,6 @@
 bug_54995_TEST_FILES = \
-  %reldir%/@testclass/testclass.m \
-  %reldir%/@testclass/subsref.m \
+  %reldir%/@testclass54995/testclass54995.m \
+  %reldir%/@testclass54995/subsref.m \
   %reldir%/bug-54995.tst
 
 TEST_FILES += $(bug_54995_TEST_FILES)