From 904f56f2c26edc7eb11d5a27579bccbeca29c618 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Tue, 26 Mar 2024 03:03:59 +0000 Subject: CTAN sync 202403260303 --- graphics/asymptote/genv.cc | 42 ++++++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 16 deletions(-) (limited to 'graphics/asymptote/genv.cc') diff --git a/graphics/asymptote/genv.cc b/graphics/asymptote/genv.cc index 8471e3b620..fe8e1b5cab 100644 --- a/graphics/asymptote/genv.cc +++ b/graphics/asymptote/genv.cc @@ -89,9 +89,12 @@ record *genv::loadModule(symbol id, string filename) { return r; } -record *genv::loadTemplatedModule(symbol id, string filename, - mem::vector *args) -{ +record *genv::loadTemplatedModule( + symbol id, + string filename, + mem::vector *args, + trans::frame *parent +) { // Hackish way to load an external library. #if 0 if (endswith(".so", filename)) { @@ -106,7 +109,7 @@ record *genv::loadTemplatedModule(symbol id, string filename, em.sync(); - record *r=ast->transAsTemplatedFile(*this, id, args); + record *r=ast->transAsTemplatedFile(*this, id, args, parent); inTranslation.remove(filename); @@ -140,24 +143,31 @@ record *genv::getModule(symbol id, string filename) { return r; } - } -record *genv::getTemplatedModule(symbol id, string filename, string sigHandle, - mem::vector* args) -{ +record *genv::getTemplatedModule( + symbol id, + string filename, + string sigHandle, + mem::vector* args, + frame *parent +) { checkRecursion(filename); - importIndex_t Index(filename,sigHandle); - record *r=loadTemplatedModule(id, filename, args); - // Don't add an erroneous module to the dictionary in interactive mode, as - // the user may try to load it again. - if (!interact::interactive || !em.errors()) { - imap[Index]=r; - } + importIndex_t Index(filename,sigHandle); - return r; + record *r=imap[Index]; + if (r) + return r; + else { + record *r=loadTemplatedModule(id, filename, args, parent); + // Don't add an erroneous module to the dictionary in interactive mode, as + // the user may try to load it again. + if (!interact::interactive || !em.errors()) + imap[Index]=r; + return r; + } } -- cgit v1.2.3