On Wed, Dec 23, 2009 at 10:15:56AM -0600, Albert Chin wrote:
> If I use $${LITERAL_DOLLAR}, I get the following in siplib/Makefile:
> $(TARGET): $(OFILES)
>         @echo '#!' >sip.exp; \
>          echo 'initsip' >>sip.exp
>         rm -f objects.o; ld -r -o objects.o -bnogc ${OFILES}; rm -f lib.exp; 
> /usr/ccs/bin/nm -BCpg objects.o | awk '{ if (((${LITERAL_DOLLAR}2 == "T") || 
> (${LITERAL_DOLLAR}2 == "D") || (${LITERAL_DOLLAR}2 == "B")) && 
> (substr(${LITERAL_DOLLAR}3,1,1) != ".")) { print ${LITERAL_DOLLAR}3 } }' | 
> sort -u >lib.exp; g++ -shared -Wl,-bE:lib.exp -o ${TARGET} ${LFLAGS} 
> objects.o ${LIBS}; rm objects.o

I think the reason this fails is because when you call rhs.find(), you
always start at the beginning of the string, not from the character
after the replacement string. So, when you have two ${LITERAL_DOLLAR}'s
in succession, you get the above. The fix is for successive rhs.find()'s
to begin after the replacement string. Patch attached.

-- 
albert chin (ch...@thewrittenword.com)
Index: siputils.py
===================================================================
--- siputils.py.orig    2009-11-23 13:49:24.000000000 +0000
+++ siputils.py 2009-12-23 16:59:42.909683475 +0000
@@ -2337,8 +2358,8 @@
                     value = ""
 
             rhs = rhs[:mstart] + value + rhs[mend:]
-            estart = rhs.find("$$(")
-            mstart = rhs.find("$$")
+            estart = rhs.find("$$(", len (rhs[:mstart] + value))
+            mstart = rhs.find("$$", len (rhs[:mstart] + value))
 
         # Expand any POSIX style environment variables.
         pleadin = ["$$(", "$("]
_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to