Bill Allombert on Fri, 22 Nov 2002 21:20:02 +0100 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Patch for install: allow to change protoype |
Hello PARI/GP developers, When using install, if you choose a wrong prototype, you cannot changing without renaming the GP function, because subsequent install will fail. For example suppose you enter by mistake ? install(addsi,GG) ? addsi(1,1) %1 = 1082894589 Which is obviously wrong... ? install(addsi,LG) *** Warning: [install] 'addsi' already there. Not replaced. NOte: this a warning not an error, so we expect the command to have done somathing but ? addsi(1,1) %2 = 1082894589 The solution is to do ? install(addsi,GG,addsi2) but this is awkward. The following (maybe not perfect) patch fix that. Index: src/language/anal.c =================================================================== RCS file: /home/megrez/cvsroot/pari/src/language/anal.c,v retrieving revision 1.120 diff -u -r1.120 anal.c --- src/language/anal.c 2002/11/16 10:34:34 1.120 +++ src/language/anal.c 2002/11/22 20:17:56 @@ -462,7 +462,15 @@ long hash; entree *ep = is_entry_intern(name, functions_hash, &hash); - if (ep) err(warner,"[install] '%s' already there. Not replaced", name); + if (ep) + { + if (ep->valence!=EpINSTALL) + err(talker,"function %s already exist in install. Not replaced", name); + err(warner,"[install] '%s' already there. Not replaced", name); + check_proto(code); + if (ep->code) free(ep->code); + ep->code = pari_strdup(code); + } else { char *s = name; Cheers, Bill.