From: Jack Jansen Date: Sun, 18 Aug 2002 21:57:09 +0000 (+0000) Subject: Refuse to run if the last bit of the destination path contains a # character. X-Git-Tag: v2.3c1~4415 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=58ba80a6a66d74f7b9dcc40fb8c08a2201749194;p=python Refuse to run if the last bit of the destination path contains a # character. This is a silly workaround for a rather serious bug in MacOSX: if you take a long filename and convert it to an FSSpec the fsspec gets a magic cooky (containing a #, indeed). If you then massage the extension of this fsspec and convert back to a pathname you may end up referring to the same file. This could destroy your sourcefile. The problem only occcurs in MacPython-OS9, not MacPython-OSX (I think). Closes bug #505562. --- diff --git a/Mac/Lib/buildtools.py b/Mac/Lib/buildtools.py index ca9b252b39..a5e641dd8d 100644 --- a/Mac/Lib/buildtools.py +++ b/Mac/Lib/buildtools.py @@ -74,7 +74,10 @@ def process(template, filename, destname, copy_codefragment, progress = EasyDialogs.ProgressBar("Processing %s..."%os.path.split(filename)[1], 120) progress.label("Compiling...") progress.inc(0) - + # check for the script name being longer than 32 chars. This may trigger a bug + # on OSX that can destroy your sourcefile. + if '#' in os.path.split(filename)[1]: + raise BuildError, "BuildApplet could destroy your sourcefile on OSX, please rename: %s" % filename # Read the source and compile it # (there's no point overwriting the destination if it has a syntax error)