comparison libinterp/corefcn/latex-text-renderer.cc @ 31210:9ad55d2e1bbf stable

Make sure we don't pass short 8.3 path to latex on Windows (bug #62779). * latex-text-renderer.cc (latex_renderer::write_tex_file): On Windows, use canonicalized path of temporary directory.
author Pantxo Diribarne <pantxo.diribarne@gmail.com>
date Sun, 28 Aug 2022 22:44:49 +0200
parents 796f54d4ddbf
children 8340137bb190
comparison
equal deleted inserted replaced
31207:1c40fc2344f4 31210:9ad55d2e1bbf
213 latex_renderer::write_tex_file (const std::string& txt, int halign) 213 latex_renderer::write_tex_file (const std::string& txt, int halign)
214 { 214 {
215 if (m_tmp_dir.empty ()) 215 if (m_tmp_dir.empty ())
216 { 216 {
217 //Create the temporary directory 217 //Create the temporary directory
218 #if defined (OCTAVE_USE_WINDOWS_API)
219 static std::string base_tmp_dir;
220
221 if (base_tmp_dir.empty ())
222 {
223 base_tmp_dir = sys::env::get_temp_directory ();
224
225 // Make sure we don't get short 8.3 path on Windows since some
226 // versions of latex on that platform don't support them
227 // (see bug #62779)
228 if (base_tmp_dir.find ('~') != std::string::npos)
229 base_tmp_dir = sys::canonicalize_file_name (base_tmp_dir);
230 }
231
232 m_tmp_dir = sys::tempnam (base_tmp_dir, "latex");
233 #else
218 m_tmp_dir = sys::tempnam ("", "latex"); 234 m_tmp_dir = sys::tempnam ("", "latex");
235 #endif
219 236
220 if (sys::mkdir (m_tmp_dir, 0700) != 0) 237 if (sys::mkdir (m_tmp_dir, 0700) != 0)
221 { 238 {
222 warning_with_id ("Octave:LaTeX:internal-error", 239 warning_with_id ("Octave:LaTeX:internal-error",
223 "latex_renderer: unable to create temp directory"); 240 "latex_renderer: unable to create temp directory");