# HG changeset patch # User John W. Eaton # Date 1548358107 0 # Node ID c9e5a09af7afb39120b1b597ceca895dde98d601 # Parent 1d03bc0d53f3d67a1c02247021ed169e696a3578# Parent 361f7ce80f8536a08214ca5484ea0b9b8f3fcc22 maint: Merge stable to default. diff -r 1d03bc0d53f3 -r c9e5a09af7af .hgignore --- a/.hgignore Wed Jan 23 20:16:29 2019 +0000 +++ b/.hgignore Thu Jan 24 19:28:27 2019 +0000 @@ -35,6 +35,7 @@ ## Scripts associated with building Octave ^build-aux/config\.(guess|rpath|sub)$ (^|/)build-aux/check-subst-vars\.sh$ +^build-aux/ar-lib$ ^build-aux/depcomp$ ^build-aux/install-sh$ ^build-aux/ltmain\.sh$ diff -r 1d03bc0d53f3 -r c9e5a09af7af NEWS diff -r 1d03bc0d53f3 -r c9e5a09af7af configure.ac --- a/configure.ac Wed Jan 23 20:16:29 2019 +0000 +++ b/configure.ac Thu Jan 24 19:28:27 2019 +0000 @@ -56,7 +56,7 @@ dnl FIXME: Since we also set libtool versions for liboctave and libinterp, dnl perhaps we should be computing the "api version" from those versions numbers dnl in some way instead of setting it independently here. -OCTAVE_API_VERSION="api-v52+" +OCTAVE_API_VERSION="api-v53" AC_SUBST(OCTAVE_MAJOR_VERSION) AC_SUBST(OCTAVE_MINOR_VERSION) diff -r 1d03bc0d53f3 -r c9e5a09af7af etc/HACKING.md --- a/etc/HACKING.md Wed Jan 23 20:16:29 2019 +0000 +++ b/etc/HACKING.md Thu Jan 24 19:28:27 2019 +0000 @@ -306,6 +306,7 @@ 5.0.0 (experimental) active development of Octave 5 on default branch 5.0.1 (pre-release) stabilization period of Octave 5 on stable branch + 5.0.90 (pre-release) first release candidate for 5.1.0 6.0.0 (experimental) active development of Octave 6 on default branch 5.1.0 (release) first release of Octave 5 from stable branch 5.1.1 (pre-release) bug fixing on stable branch after 5.1.0 release @@ -322,8 +323,10 @@ * Any version X.0.0 means "this is an experimental development version". - * Any version X.Y.1 means, "this is a pre-release version meant - for bug fixing and testing". + * Any version X.Y.Z with Z > 0 means, "this is a pre-release version + meant for bug fixing and testing". In practice, Z will be either 1 + (stabilization period after and before making release candidates) or + 90, 91, etc. (release candidate snapshots leading up to release). * Any version X.Y.0 with Y != 0 means "this is a released version". diff -r 1d03bc0d53f3 -r c9e5a09af7af etc/NEWS.5 --- a/etc/NEWS.5 Wed Jan 23 20:16:29 2019 +0000 +++ b/etc/NEWS.5 Thu Jan 24 19:28:27 2019 +0000 @@ -1,5 +1,5 @@ -Summary of important user-visible changes for version 5.0 (yyyy-mm-dd): ----------------------------------------------------------------------- +Summary of important user-visible changes for version 5 (yyyy-mm-dd): +-------------------------------------------------------------------- ** The determination of an object's dimensions, size, and shape by the functions ndims, rows, columns, isscalar, isvector, isrow, iscolumn, @@ -12,7 +12,7 @@ results are equally likely) sample of integers. This may produce different results in existing code. If it is necessary to reproduce the exact random integer sequence as in previous versions use - + ri = imin + floor ((imax - imin + 1) * rand ()); ** A new core function movfun will apply a function to a sliding @@ -21,7 +21,7 @@ scheme movXXX where "XXX" is the function that will be applied. For example, the moving average over a dataset is movmean. New moving window functions: - + movfun movslice movmad movmax movmean movmedian movmin movprod movstd movsum movvar @@ -47,7 +47,7 @@ exceeds the string length. This behavior more closely matches common sense and is Matlab compatible. Example: - Octave 5.0 : strncmp ("abc", "abc", 100) => true + Octave 5 : strncmp ("abc", "abc", 100) => true Previously : strncmp ("abc", "abc", 100) => false ** The intmax, intmin, and flintmax functions now accept a variable @@ -57,7 +57,7 @@ required. Example: x = int8 (3); - Octave 5.0 : range = [ intmin(x), intmax(x) ] + Octave 5 : range = [ intmin(x), intmax(x) ] Previously : range = [ intmin(class(x)), intmax(class(x)) ] ** The ranks function has been recoded for performance and is now 25X @@ -196,7 +196,7 @@ expansion on path elements and Octave's load-path is no longer subject to these expansions. - ** New functions added in 5.0: + ** New functions added in 5: clearvars isfile @@ -242,16 +242,16 @@ ** Deprecated functions. - The following functions have been deprecated in Octave 5.0 and will + The following functions have been deprecated in Octave 5 and will be removed from Octave 7 (or whatever version is the second major - release after 5.0): + release after 5): Function | Replacement -----------------------|------------------ output_max_field_width | output_precision ** The following functions were deprecated in Octave 4.2 and have been - removed from Octave 5.0. + removed from Octave 5. Function | Replacement ---------------------|------------------ @@ -268,8 +268,8 @@ ** Deprecated graphics properties. The following properties or allowed corresponding values have been - deprecated in Octave 5.0 and will be removed from Octave 7 (or - whatever version is the second major release after 5.0): + deprecated in Octave 5 and will be removed from Octave 7 (or + whatever version is the second major release after 5): Object | Property | Value ---------------------|-------------------------|------------------- @@ -280,7 +280,7 @@ uitable | fontangle | "oblique" ** The following properties or allowed corresponding values were - deprecated in Octave 4.2 and have been removed from Octave 5.0: + deprecated in Octave 4.2 and have been removed from Octave 5: Object | Property | Value ---------------------|-------------------------|------------------- @@ -296,7 +296,7 @@ text | erasemode | ** The C++ function is_keyword has been deprecated in favor of - iskeyword. The old function will be removed two versions after 5.0. + iskeyword. The old function will be removed two versions after 5. --------------------------------------------------------- diff -r 1d03bc0d53f3 -r c9e5a09af7af libgui/graphics/GLCanvas.cc --- a/libgui/graphics/GLCanvas.cc Wed Jan 23 20:16:29 2019 +0000 +++ b/libgui/graphics/GLCanvas.cc Thu Jan 24 19:28:27 2019 +0000 @@ -140,11 +140,11 @@ if (obj.valid_object ()) { graphics_object figObj (obj.get_ancestor ("figure")); - + // Make sure we have a valid current context if (! begin_rendering ()) error ("print: no valid OpenGL offscreen context"); - + try { octave::gl2ps_print (m_glfcns, figObj, file_cmd.toStdString (), @@ -154,7 +154,7 @@ { octave_link::post_exception (std::current_exception ()); } - + end_rendering (); } } diff -r 1d03bc0d53f3 -r c9e5a09af7af libgui/module.mk --- a/libgui/module.mk Wed Jan 23 20:16:29 2019 +0000 +++ b/libgui/module.mk Thu Jan 24 19:28:27 2019 +0000 @@ -61,7 +61,7 @@ ## Increment the following version numbers as needed and according ## to the rules in the etc/HACKING.md file: -%canon_reldir%_liboctgui_current = 4 +%canon_reldir%_liboctgui_current = 5 %canon_reldir%_liboctgui_revision = 0 %canon_reldir%_liboctgui_age = 0 diff -r 1d03bc0d53f3 -r c9e5a09af7af libgui/src/dialog.cc --- a/libgui/src/dialog.cc Wed Jan 23 20:16:29 2019 +0000 +++ b/libgui/src/dialog.cc Thu Jan 24 19:28:27 2019 +0000 @@ -463,7 +463,7 @@ setWindowTitle (title.isEmpty () ? " " : title); setDirectory (dirname); - + // FIXME: Remove, if for all common KDE versions (bug #54607) is resolved. if (! resource_manager::get_settings ()->value ("use_native_file_dialogs", true).toBool ()) diff -r 1d03bc0d53f3 -r c9e5a09af7af libinterp/corefcn/error.cc diff -r 1d03bc0d53f3 -r c9e5a09af7af libinterp/corefcn/ft-text-renderer.cc --- a/libinterp/corefcn/ft-text-renderer.cc Wed Jan 23 20:16:29 2019 +0000 +++ b/libinterp/corefcn/ft-text-renderer.cc Thu Jan 24 19:28:27 2019 +0000 @@ -527,7 +527,7 @@ // The X offset of the baseline for the current line. int line_xoffset; - + // Min and max y coordinates of all glyphs in a line. FT_Pos m_ymin; FT_Pos m_ymax; @@ -856,12 +856,12 @@ // First run text_to_pixels which will also build the string list m_strlist = std::list (); - + octave::unwind_protect frame; frame.protect_var (m_do_strlist); frame.protect_var (m_strlist); m_do_strlist = true; - + text_to_pixels (txt, pxls, box, ha, va, rot, interp, false); lst = m_strlist; @@ -878,7 +878,7 @@ std::string str = e.string_value (); const uint8_t *c = reinterpret_cast (str.c_str ()); uint32_t u32_c; - + size_t n = str.size (); size_t icurr = 0; size_t ibegin = 0; @@ -903,7 +903,7 @@ // the newline character fs.set_y (line_yoffset + yoffset); fs.set_color (color); - + std::string s = str.substr (ibegin, icurr - ibegin); if (! s.empty ()) { @@ -923,7 +923,7 @@ if (u32_c == 10) { previous = 0; - + if (m_do_strlist && mode == MODE_RENDER) { // Start a new string in m_strlist diff -r 1d03bc0d53f3 -r c9e5a09af7af libinterp/corefcn/svd.cc --- a/libinterp/corefcn/svd.cc Wed Jan 23 20:16:29 2019 +0000 +++ b/libinterp/corefcn/svd.cc Thu Jan 24 19:28:27 2019 +0000 @@ -395,8 +395,8 @@ well as singular values). When calculating just the singular values the following discussion is not relevant. -The default routine use by Octave is the newer @code{gesdd} which is based on a -Divide-and-Conquer algorithm that is 5X faster than the alternative +The default routine used by Octave is the newer @code{gesdd} which is based on +a Divide-and-Conquer algorithm that is 5X faster than the alternative @code{gesvd}, which is based on QR factorization. However, the new algorithm can use significantly more memory. For an @nospell{MxN} input matrix the memory usage is of order O(min(M,N) ^ 2), whereas the alternative is of order diff -r 1d03bc0d53f3 -r c9e5a09af7af libinterp/corefcn/sysdep.cc --- a/libinterp/corefcn/sysdep.cc Wed Jan 23 20:16:29 2019 +0000 +++ b/libinterp/corefcn/sysdep.cc Thu Jan 24 19:28:27 2019 +0000 @@ -1110,9 +1110,9 @@ @end deftypefn */) { octave_value_list retval; - + int nargin = args.length (); - + if (nargin > 1) print_usage (); @@ -1120,7 +1120,7 @@ { bool saved_state = Vpause_enabled; std::string state = args(0).string_value (); - + if (state == "on") Vpause_enabled = true; else if (state == "off") @@ -1129,14 +1129,14 @@ ;// Do nothing else error ("pause: first argument must be \"on\", \"off\" or \"query\""); - + if (nargout > 0 || state == "query") retval.append (saved_state ? "on" : "off"); } else if (Vpause_enabled) { double dval; - + if (nargin == 0) dval = octave_Inf; else @@ -1147,7 +1147,7 @@ else { Fdrawnow (); - + octave::sleep (dval, true); } } diff -r 1d03bc0d53f3 -r c9e5a09af7af libinterp/corefcn/utils.cc --- a/libinterp/corefcn/utils.cc Wed Jan 23 20:16:29 2019 +0000 +++ b/libinterp/corefcn/utils.cc Thu Jan 24 19:28:27 2019 +0000 @@ -1283,15 +1283,15 @@ // is asleep if (do_graphics_events) gh_manager::unlock (); - + if (octave::math::isinf (seconds)) { // Wait for kbhit int c = -1; octave::flush_stdout (); - + struct timespec one_tenth = { 0, 100000000 }; - + while (c < 0) { octave_nanosleep_wrapper (&one_tenth, nullptr); diff -r 1d03bc0d53f3 -r c9e5a09af7af libinterp/module.mk --- a/libinterp/module.mk Wed Jan 23 20:16:29 2019 +0000 +++ b/libinterp/module.mk Thu Jan 24 19:28:27 2019 +0000 @@ -150,7 +150,7 @@ ## Increment the following version numbers as needed and according ## to the rules in the etc/HACKING.md file: -%canon_reldir%_liboctinterp_current = 6 +%canon_reldir%_liboctinterp_current = 7 %canon_reldir%_liboctinterp_revision = 0 %canon_reldir%_liboctinterp_age = 0 diff -r 1d03bc0d53f3 -r c9e5a09af7af libinterp/parse-tree/pt-jit.cc --- a/libinterp/parse-tree/pt-jit.cc Wed Jan 23 20:16:29 2019 +0000 +++ b/libinterp/parse-tree/pt-jit.cc Thu Jan 24 19:28:27 2019 +0000 @@ -137,7 +137,7 @@ namespace octave { namespace jit - { + { #if defined (LEGACY_PASSMANAGER) typedef llvm::legacy::PassManager PassManager; typedef llvm::legacy::FunctionPassManager FunctionPassManager; @@ -2447,7 +2447,7 @@ // FIXME: Provide a meaningful replacement instead of simply skipping it? module_pass_manager->add (llvm::createAlwaysInlinerPass ()); #endif - + // In 3.6, a pass was inserted in the pipeline to make the DataLayout accessible: // MyPassManager->add(new DataLayoutPass(MyTargetMachine->getDataLayout())); // In 3.7, you don’t need a pass, you set the DataLayout on the Module: diff -r 1d03bc0d53f3 -r c9e5a09af7af liboctave/module.mk --- a/liboctave/module.mk Wed Jan 23 20:16:29 2019 +0000 +++ b/liboctave/module.mk Thu Jan 24 19:28:27 2019 +0000 @@ -85,7 +85,7 @@ ## Increment the following version numbers as needed and according ## to the rules in the etc/HACKING.md file: -%canon_reldir%_%canon_reldir%_current = 6 +%canon_reldir%_%canon_reldir%_current = 7 %canon_reldir%_%canon_reldir%_revision = 0 %canon_reldir%_%canon_reldir%_age = 0 diff -r 1d03bc0d53f3 -r c9e5a09af7af liboctave/util/oct-rl-hist.c --- a/liboctave/util/oct-rl-hist.c Wed Jan 23 20:16:29 2019 +0000 +++ b/liboctave/util/oct-rl-hist.c Thu Jan 24 19:28:27 2019 +0000 @@ -280,7 +280,7 @@ // FIXME: Should this call current_liboctave_error_handler instead? if (! retval) return retval; - + k = 0; for (i = beg; i < end; i++) { diff -r 1d03bc0d53f3 -r c9e5a09af7af scripts/+matlab/+lang/makeUniqueStrings.m --- a/scripts/+matlab/+lang/makeUniqueStrings.m Wed Jan 23 20:16:29 2019 +0000 +++ b/scripts/+matlab/+lang/makeUniqueStrings.m Thu Jan 24 19:28:27 2019 +0000 @@ -41,7 +41,7 @@ ## The optional input @var{maxlength} specifies the maximum length of any ## string in @var{uniqstr}. If an input string cannot be made unique without ## exceeding @var{maxlength} an error is emitted. -## +## ## The optional output @var{ismodified} is a logical array indicating whether ## each element in @var{str} was modified to make it unique. ## diff -r 1d03bc0d53f3 -r c9e5a09af7af scripts/general/randi.m --- a/scripts/general/randi.m Wed Jan 23 20:16:29 2019 +0000 +++ b/scripts/general/randi.m Thu Jan 24 19:28:27 2019 +0000 @@ -102,20 +102,20 @@ elseif (nargin == 2 && isscalar (varargin{1})) varargin(2) = varargin(1); endif - + ## Rejection Algorithm to guarantee unbiased results. See bug #54619. rng = (imax - imin) + 1; # requested range N = prod ([varargin{:}]); # number of requested elements K = floor ((flintmax () + 1) / rng); # number of primary integers ... # mapped to single output p = (K*rng) / (flintmax () + 1); # expected proportion of used primaries - - do + + do M = ceil (N/p + 10*sqrt (N/p - N)); # number of requested primary integers r_prim = floor (rand (M,1) * (flintmax () + 1)); r_prim = r_prim(r_prim < K*rng); until (numel (r_prim) >= N) # should practically always be true - + ri = imin + floor (reshape (r_prim(1:N), varargin{:}) / K); if (! strcmp (rclass, "double")) diff -r 1d03bc0d53f3 -r c9e5a09af7af scripts/gui/waitbar.m --- a/scripts/gui/waitbar.m Wed Jan 23 20:16:29 2019 +0000 +++ b/scripts/gui/waitbar.m Thu Jan 24 19:28:27 2019 +0000 @@ -278,10 +278,10 @@ %! disp ("Push the button to stop the process."); %! hf = waitbar (0,"0","Name","Building Koch curve ...",... %! "createcancelbtn", "setappdata (gcbf,'interrupt', true)"); -%! +%! %! pos2 = get (hf, "position"); %! set (hf, "position", [pos1(1)+(pos1(3)-pos2(3))/2, pos1(2)+pos1(4), pos2(3:4)]); -%! +%! %! for ii = 1:niter %! ## Check cancel request %! if (! ishghandle (hf)) diff -r 1d03bc0d53f3 -r c9e5a09af7af scripts/miscellaneous/clearvars.m --- a/scripts/miscellaneous/clearvars.m Wed Jan 23 20:16:29 2019 +0000 +++ b/scripts/miscellaneous/clearvars.m Thu Jan 24 19:28:27 2019 +0000 @@ -147,7 +147,7 @@ if (numvar > 0 && any ([vars.except])) ptn = strjoin ({ vars([vars.except]).var_name }, '|'); idx_except = ! cellfun (@isempty, regexp (varlist, ptn)); - idx_clear(idx_except) = false; + idx_clear(idx_except) = false; endif varlist = varlist(idx_clear); diff -r 1d03bc0d53f3 -r c9e5a09af7af scripts/optimization/sqp.m --- a/scripts/optimization/sqp.m Wed Jan 23 20:16:29 2019 +0000 +++ b/scripts/optimization/sqp.m Thu Jan 24 19:28:27 2019 +0000 @@ -441,7 +441,7 @@ [x_new, alpha, obj_new, globals] = ... linesearch_L1 (x, p, obj_fun, obj_grd, ce_fun, ci_fun, lambda, ... obj, c, globals); - + delx = x_new - x; ## Check if step size has become too small (indicates lack of progress). diff -r 1d03bc0d53f3 -r c9e5a09af7af scripts/plot/draw/fplot.m --- a/scripts/plot/draw/fplot.m Wed Jan 23 20:16:29 2019 +0000 +++ b/scripts/plot/draw/fplot.m Thu Jan 24 19:28:27 2019 +0000 @@ -123,14 +123,14 @@ while (i <= numel (varargin)) arg = varargin{i}; if (ischar (arg)) - [~, valid_fmt] = __pltopt__ ("fplot", arg, false); + [~, valid_fmt] = __pltopt__ ("fplot", arg, false); if (valid_fmt) fmt(end+1) = arg; else if (i == numel (varargin)) error ("fplot: bad input in position %d", i); endif - fmt(end+(1:2)) = varargin([i, i+1]); + fmt(end+(1:2)) = varargin([i, i+1]); i++; # Skip PROPERTY. endif elseif (isnumeric (arg) && isscalar (arg) && arg > 0) diff -r 1d03bc0d53f3 -r c9e5a09af7af scripts/plot/util/openfig.m --- a/scripts/plot/util/openfig.m Wed Jan 23 20:16:29 2019 +0000 +++ b/scripts/plot/util/openfig.m Thu Jan 24 19:28:27 2019 +0000 @@ -145,7 +145,7 @@ %! h = figure ("visible", "off"); %! ftmp = [tempname() ".ofig"]; %! hgsave (h, ftmp); -%! openfig (ftmp, "new", [1, 2, 3]); +%! openfig (ftmp, "new", [1, 2, 3]); %! unwind_protect_cleanup %! unlink (ftmp); %! close (h); @@ -155,7 +155,7 @@ %! h = figure ("visible", "off"); %! ftmp = [tempname() ".ofig"]; %! hgsave (h, ftmp); -%! openfig (ftmp, "foobar"); +%! openfig (ftmp, "foobar"); %! unwind_protect_cleanup %! unlink (ftmp); %! close (h); diff -r 1d03bc0d53f3 -r c9e5a09af7af scripts/plot/util/private/__print_parse_opts__.m --- a/scripts/plot/util/private/__print_parse_opts__.m Wed Jan 23 20:16:29 2019 +0000 +++ b/scripts/plot/util/private/__print_parse_opts__.m Thu Jan 24 19:28:27 2019 +0000 @@ -253,7 +253,7 @@ graphics_toolkit (arg_st.figure)); endif - + if (arg_st.use_color == 0) if (any (strcmp ({"ps", "ps2", "eps", "eps2"}, arg_st.devopt))) arg_st.use_color = -1; @@ -615,7 +615,7 @@ if (isempty (bindir)) bindir = __octave_config_info__ ("archlibdir"); endif - + binary = fullfile (bindir, "octave-svgconvert"); if (! exist (binary, "file")) diff -r 1d03bc0d53f3 -r c9e5a09af7af src/mkoctfile.in.cc --- a/src/mkoctfile.in.cc Wed Jan 23 20:16:29 2019 +0000 +++ b/src/mkoctfile.in.cc Thu Jan 24 19:28:27 2019 +0000 @@ -306,7 +306,7 @@ vars["OCT_LINK_OPTS"] = get_variable ("OCT_LINK_OPTS", %OCTAVE_CONF_OCT_LINK_OPTS%); - vars["LDFLAGS"] = get_variable ("LDFLAGS", DEFAULT_LDFLAGS); + vars["LDFLAGS"] = get_variable ("LDFLAGS", %OCTAVE_CONF_LDFLAGS%); vars["LD_CXX"] = get_variable ("LD_CXX", %OCTAVE_CONF_MKOCTFILE_LD_CXX%); @@ -315,6 +315,8 @@ // FIXME: Remove LFLAGS in Octave 7.0 vars["LFLAGS"] = get_variable ("LFLAGS", DEFAULT_LDFLAGS); + if (vars["LFLAGS"] != DEFAULT_LDFLAGS) + std::cerr << "warning: LFLAGS is deprecated and will be removed in a future version of Octave, use LDFLAGS instead" << std::endl; vars["F77_INTEGER8_FLAG"] = get_variable ("F77_INTEGER8_FLAG", %OCTAVE_CONF_F77_INTEGER_8_FLAG%); @@ -1076,29 +1078,21 @@ return 1; } - // FIXME: Remove LFLAGS in Octave 7.0 - if (vars["LFLAGS"] != vars["LDFLAGS"]) - { - std::cerr << "warning: LFLAGS is deprecated and will be removed in a future version of Octave, use LDFLAGS instead" << std::endl; - vars["LDFLAGS"] = vars["LFLAGS"]; - } - std::string octave_libs; if (link_stand_alone) { if (! vars["LD_CXX"].empty ()) { - octave_libs = vars["OCTAVE_LIBS"]; + octave_libs = "-L" + quote_path (vars["OCTLIBDIR"]) + + ' ' + vars["OCTAVE_LIBS"]; std::string cmd = (vars["LD_CXX"] + ' ' + vars["CPPFLAGS"] + ' ' + vars["ALL_CXXFLAGS"] + ' ' + vars["RDYNAMIC_FLAG"] + ' ' + vars["ALL_LDFLAGS"] + ' ' + pass_on_options + ' ' + output_option + ' ' + objfiles + ' ' + libfiles + ' ' - + ldflags + ' ' + vars["LDFLAGS"] - + " -L" + quote_path (vars["OCTLIBDIR"]) - + ' ' + octave_libs + ' ' + + ldflags + ' ' + vars["LFLAGS"] + ' ' + octave_libs + ' ' + vars["OCTAVE_LINK_OPTS"] + ' ' + vars["OCTAVE_LINK_DEPS"]); int status = run_command (cmd, printonly); @@ -1119,14 +1113,15 @@ else { #if defined (OCTAVE_USE_WINDOWS_API) || defined(CROSS) - octave_libs = vars["OCTAVE_LIBS"]; + octave_libs = "-L" + quote_path (vars["OCTLIBDIR"]) + + ' ' + vars["OCTAVE_LIBS"]; #endif std::string cmd = (vars["DL_LD"] + ' ' + vars["ALL_CXXFLAGS"] + ' ' - + vars["DL_LDFLAGS"] + ' ' + pass_on_options + + vars["DL_LDFLAGS"] + ' ' + vars["LDFLAGS"] + ' ' + pass_on_options + " -o " + octfile + ' ' + objfiles + ' ' + libfiles + ' ' - + ldflags + ' ' + vars["LDFLAGS"] + ' ' + octave_libs + ' ' + + ldflags + ' ' + vars["LFLAGS"] + ' ' + octave_libs + ' ' + vars["OCT_LINK_OPTS"] + ' ' + vars["OCT_LINK_DEPS"]); int status = run_command (cmd, printonly); diff -r 1d03bc0d53f3 -r c9e5a09af7af src/octave-svgconvert.cc --- a/src/octave-svgconvert.cc Wed Jan 23 20:16:29 2019 +0000 +++ b/src/octave-svgconvert.cc Thu Jan 24 19:28:27 2019 +0000 @@ -718,7 +718,7 @@ * font: specify a file name for the default FreeSans font\n\ * reconstruct: specify wether to reconstruct triangle to polygons (0 or 1)\n\ * outfile: output file name\n"; - + if (strcmp (argv[1], "-h") == 0) { std::cout << help; @@ -804,7 +804,7 @@ { int id = QFontDatabase::addApplicationFont (fontpath); if (id < 0) - std::cerr << "warning: print: " + std::cerr << "warning: print: " "Unable to add default font to database\n"; } else