Index: Portfile
===================================================================
--- Portfile	(revision 110542)
+++ Portfile	(working copy)
@@ -2,13 +2,13 @@
 # $Id$
 
 PortSystem          1.0
-PortGroup           python26 1.0
+PortGroup           python 1.0
 PortGroup           active_variants 1.1
 
 name                pymol
-version             1.5
-revision            8
+version             1.6.0
 categories          science chemistry
+license             GPL
 maintainers         bromo.med.uc.edu:howarth
 description         Molecular graphics system
 long_description    PyMOL is a molecular graphics system with an embedded Python interpreter \
@@ -21,17 +21,32 @@
 
 master_sites        sourceforge
 fetch.type          svn
-svn.url             https://pymol.svn.sourceforge.net/svnroot/pymol/trunk/pymol
-svn.revision        4013
+svn.url             https://svn.code.sf.net/p/pymol/code/trunk/pymol
+svn.revision        4039
 worksrcdir          pymol
 
-depends_lib         port:freetype port:libpng port:python26 port:py26-pmw port:py26-numpy port:py26-scipy port:mesa port:glew port:py26-tkinter port:freeglut
+python.default_version 27
+
+depends_lib-append  port:freeglut \
+                    port:freetype \
+                    port:glew \
+                    port:libpng \
+                    port:mesa \
+                    port:py${python.version}-numpy \
+                    port:py${python.version}-pmw \
+                    port:py${python.version}-scipy \
+                    port:py${python.version}-tkinter
 depends_run         port:xdpyinfo
 
-# py27-scipy is not universal
+# py-scipy is not universal
 universal_variant   no
 
-patchfiles          setup_py.diff pymol_shell.diff pmg_tk_platform.patch apbs-psize.patch
+patchfiles          setup_py.diff \
+                    pymol_shell.diff \
+                    pmg_tk_platform.patch \
+                    apbs-psize.patch \
+                    apbs_tkinter.patch \
+                    pymol-clang.diff 
 
 require_active_variants tcl "" corefoundation
 require_active_variants tk "" quartz
@@ -44,42 +59,50 @@
 
 use_parallel_build yes
 
-variant gcc43 description conflicts gcc44 gcc45 gcc46 gcc47 description {build using macports-gcc-4.3} {
-    python.add_archflags   no
-    configure.compiler  macports-gcc-4.3
+variant gcc43 description conflicts gcc44 gcc45 gcc46 gcc47 gcc48 gcc49 description {build using macports-gcc-4.3} {
+    python.add_archflags    no
+    configure.compiler      macports-gcc-4.3
 }
 
-variant gcc44 description conflicts gcc43 gcc45 gcc46 gcc47 description {build using macports-gcc-4.4} {
-    python.add_archflags   no
-    configure.compiler  macports-gcc-4.4
+variant gcc44 description conflicts gcc43 gcc45 gcc46 gcc47 gcc48 gcc49 description {build using macports-gcc-4.4} {
+    python.add_archflags    no
+    configure.compiler      macports-gcc-4.4
 }
 
-variant gcc45 description conflicts gcc43 gcc44 gcc46 gcc47 description {build using macports-gcc-4.5} {
-    python.add_archflags   no
-    configure.compiler  macports-gcc-4.5
+variant gcc45 description conflicts gcc43 gcc44 gcc46 gcc47 gcc48 gcc49 description {build using macports-gcc-4.5} {
+    python.add_archflags    no
+    configure.compiler      macports-gcc-4.5
 }
 
-variant gcc46 description conflicts gcc43 gcc44 gcc45 gcc47 description {build using macports-gcc-4.6} {
-    python.add_archflags   no
-    configure.compiler  macports-gcc-4.6
+variant gcc46 description conflicts gcc43 gcc44 gcc45 gcc47 gcc48 gcc49 description {build using macports-gcc-4.6} {
+    python.add_archflags    no
+    configure.compiler      macports-gcc-4.6
 }
 
-variant gcc47 description conflicts gcc43 gcc44 gcc45 gcc46 description {build using macports-gcc-4.7} {
-    python.add_archflags   no
-    configure.compiler  macports-gcc-4.7
+variant gcc47 description conflicts gcc43 gcc44 gcc45 gcc46 gcc48 gcc49 description {build using macports-gcc-4.7} {
+    python.add_archflags    no
+    configure.compiler      macports-gcc-4.7
 }
 
-build {
+variant gcc48 description conflicts gcc43 gcc44 gcc45 gcc46 gcc47 gcc49 description {build using macports-gcc-4.8} {
+    python.add_archflags    no
+    configure.compiler      macports-gcc-4.8
 }
 
+variant gcc49 description conflicts gcc43 gcc44 gcc45 gcc46 gcc47 gcc48 description {build using macports-gcc-4.9} {
+    python.add_archflags    no
+    configure.compiler      macports-gcc-4.9
+}
+
+build {}
+
 pre-destroot {
-	destroot.env CC="${configure.cc}" CXX="${configure.cxx}"
+    destroot.env CC="${configure.cc}" CXX="${configure.cxx}"
 }
 
 post-destroot {
      file copy ${worksrcpath}/setup/pymol_macports ${destroot}${prefix}/bin/pymol
      file attributes ${destroot}${prefix}/bin/pymol -permissions a+x
-     ln -s ${python.pkgd}/pymol ${destroot}${python.pkgd}/pymol/pymol_path
      foreach d {data modules examples test scripts} {
         copy ${worksrcpath}/${d} ${destroot}${python.pkgd}/pymol
     }
Index: files/apbs-psize.patch
===================================================================
--- files/apbs-psize.patch	(revision 110542)
+++ files/apbs-psize.patch	(working copy)
@@ -1,11 +1,11 @@
---- modules/pmg_tk/startup/apbs_tools.py.orig	2012-02-18 17:28:11.000000000 -0500
-+++ modules/pmg_tk/startup/apbs_tools.py	2012-02-18 17:38:31.000000000 -0500
-@@ -832,7 +832,7 @@
-                                      label_pyclass = FileDialogButtonClassFactory.get(self.setPsizeLocation),
-                                      validate = {'validator':quickFileValidation,},
-                                      #value = '/usr/local/apbs-0.3.1/tools/manip/psize.py',
--                                     value = get_default_location('psize.py'),
-+                                     value = get_default_location('apbs-psize.py'),
-                                      label_text = 'APBS psize.py location:',
-                                      )
-         self.psize.pack(fill = 'x', padx = 20, pady = 10)
+--- modules/pmg_tk/startup/apbs_tools.py.orig
++++ modules/pmg_tk/startup/apbs_tools.py
+@@ -888,7 +888,7 @@
+             pass
+ 
+         if not psize_location:
+-            psize_location = get_default_location('psize.py')
++            psize_location = get_default_location('apbs-psize.py')
+         if not apbs_location:
+             apbs_location = get_default_location('apbs.exe')
+         if not apbs_location:
Index: files/apbs_tkinter.patch
===================================================================
--- files/apbs_tkinter.patch	(revision 0)
+++ files/apbs_tkinter.patch	(working copy)
@@ -0,0 +1,196 @@
+--- modules/pmg_tk/startup/apbs_tools.py.orig
++++ modules/pmg_tk/startup/apbs_tools.py
+@@ -612,7 +612,8 @@
+         # Set up the Main page
+         page = self.notebook.add('Main')
+         group = Pmw.Group(page,tag_text='Main options')
+-        group.pack(fill = 'both', expand = 1, padx = 10, pady = 5)
++        #group.pack(fill = 'both', expand = 1, padx = 10, pady = 5)
++        group.grid(padx = 10, pady = 5, sticky=(N, S, E, W))
+         self.selection = Pmw.EntryField(group.interior(),
+                                         labelpos='w',
+                                         label_text='Selection to use: ',
+@@ -658,7 +659,8 @@
+         page = self.notebook.add('Configuration')
+ 
+         group = Pmw.Group(page,tag_text='Dielectric Constants')
+-        group.pack(fill = 'both', expand = 1, padx = 4, pady = 5)
++        #group.pack(fill = 'both', expand = 1, padx = 4, pady = 5)
++        group.grid(padx = 4, pady = 5, sticky=(N, S, E, W))
+         group.grid(column=0, row=0)
+         self.interior_dielectric = Pmw.EntryField(group.interior(),labelpos='w',
+                                    label_text = 'Protein Dielectric:',
+@@ -677,7 +679,8 @@
+             #entry.pack(side='left',fill='both',expand=1,padx=4) # side-by-side
+             entry.pack(fill='x',expand=1,padx=4,pady=1) # vertical
+         group = Pmw.Group(page,tag_text='Other')
+-        group.pack(fill='both',expand=1, padx=4, pady=5)
++        #group.pack(fill='both',expand=1, padx=4, pady=5)
++        group.grid(padx=4, pady=5, sticky=(N, S, E, W))
+         group.grid(column=1, row=1,columnspan=4)
+         self.max_mem_allowed = Pmw.EntryField(group.interior(),labelpos='w',
+                                               label_text = 'Maximum Memory Allowed (MB):',
+@@ -735,7 +738,8 @@
+ 
+ 
+         group = Pmw.Group(page,tag_text='Ions')
+-        group.pack(fill='both',expand=1, padx=4, pady=5)
++        #group.pack(fill='both',expand=1, padx=4, pady=5)
++        group.grid(padx=4, pady=5, sticky=(N, S, E, W))
+         group.grid(column=0, row=1, )
+         self.ion_plus_one_conc = Pmw.EntryField(group.interior(),
+                                                 labelpos='w',
+@@ -794,7 +798,8 @@
+             entry.pack(fill='x',expand=1,padx=4)
+ 
+         group = Pmw.Group(page,tag_text = 'Coarse Mesh Length')
+-        group.pack(fill = 'both', expand = 1, padx = 4, pady = 5)
++        #group.pack(fill = 'both', expand = 1, padx = 4, pady = 5)
++        group.grid(padx = 4, pady = 5, sticky=(N, S, E, W))
+         group.grid(column = 1, row = 0)
+         for coord in 'x y z'.split():
+             setattr(self,'grid_coarse_%s'%coord,Pmw.EntryField(group.interior(),
+@@ -809,7 +814,8 @@
+ 
+ 
+         group = Pmw.Group(page,tag_text = 'Fine Mesh Length')
+-        group.pack(fill = 'both', expand = 1, padx = 4, pady = 5)
++        #group.pack(fill = 'both', expand = 1, padx = 4, pady = 5)
++        group.grid(padx = 4, pady = 5, sticky=(N, S, E, W))
+         group.grid(column = 2, row = 0)
+         for coord in 'x y z'.split():
+             setattr(self,'grid_fine_%s'%coord,Pmw.EntryField(group.interior(),
+@@ -824,7 +830,8 @@
+ 
+ 
+         group = Pmw.Group(page,tag_text = 'Grid Center')
+-        group.pack(fill = 'both', expand = 1, padx = 4, pady = 5)
++        #group.pack(fill = 'both', expand = 1, padx = 4, pady = 5)
++        group.grid(padx = 4, pady = 5, sticky=(N, S, E, W))
+         group.grid(column = 3, row = 0)
+         for coord in 'x y z'.split():
+             setattr(self,'grid_center_%s'%coord,Pmw.EntryField(group.interior(),
+@@ -838,7 +845,8 @@
+             getattr(self,'grid_center_%s'%coord).pack(fill='x', expand=1, padx=4, pady=1)
+ 
+         group = Pmw.Group(page,tag_text = 'Grid Points')
+-        group.pack(fill = 'both', expand = 1, padx = 4, pady = 5)
++        #group.pack(fill = 'both', expand = 1, padx = 4, pady = 5)
++        group.grid(padx = 4, pady = 5, sticky=(N, S, E, W))
+         group.grid(column = 4, row = 0)
+         for coord in 'x y z'.split():
+             setattr(self,'grid_points_%s'%coord,Pmw.EntryField(group.interior(),
+@@ -856,7 +864,8 @@
+         page.grid_columnconfigure(5,weight=1)
+         page = self.notebook.add('Program Locations')
+         group = Pmw.Group(page,tag_text='Locations')
+-        group.pack(fill = 'both', expand = 1, padx = 10, pady = 5)
++        #group.pack(fill = 'both', expand = 1, padx = 10, pady = 5)
++        group.grid(padx = 10, pady = 5, sticky=(N, S, E, W))
+         def quickFileValidation(s):
+             if s == '': return Pmw.PARTIAL
+             elif os.path.isfile(s): return Pmw.OK
+@@ -955,7 +964,8 @@
+         
+         page = self.notebook.add('Temp File Locations')
+         group = Pmw.Group(page,tag_text='Locations')
+-        group.pack(fill = 'both', expand = 1, padx = 10, pady = 5)
++        #group.pack(fill = 'both', expand = 1, padx = 10, pady = 5)
++        group.grid(padx = 10, pady = 5, sticky=(N, S, E, W))
+         self.pymol_generated_pqr_filename = Pmw.EntryField(group.interior(),
+                                                            labelpos = 'w',
+                                                            label_pyclass = FileDialogButtonClassFactory.get(self.setPymolGeneratedPqrFilename),
+@@ -1003,17 +1013,20 @@
+         page = self.notebook.add('Visualization (1)')
+         group = VisualizationGroup(page,tag_text='Visualization',visgroup_num=1)
+         self.visualization_group_1 = group
+-        group.pack(fill = 'both', expand = 1, padx = 10, pady = 5)
++        #group.pack(fill = 'both', expand = 1, padx = 10, pady = 5)
++        group.grid(padx = 10, pady = 5, sticky=(N, S, E, W))
+ 
+         page = self.notebook.add('Visualization (2)')
+         group = VisualizationGroup(page,tag_text='Visualization',visgroup_num=2)
+         self.visualization_group_2 = group
+-        group.pack(fill = 'both', expand = 1, padx = 10, pady = 5)
++        #group.pack(fill = 'both', expand = 1, padx = 10, pady = 5)
++        group.grid(padx = 10, pady = 5, sticky=(N, S, E, W))
+ 
+         # Create a couple of other empty pages
+         page = self.notebook.add('About')
+         group = Pmw.Group(page, tag_text='About PyMOL APBS Tools')
+-        group.pack(fill = 'both', expand = 1, padx = 10, pady = 5)
++        #group.pack(fill = 'both', expand = 1, padx = 10, pady = 5)
++        group.grid(padx = 10, pady = 5, sticky=(N, S, E, W))
+         text = """This plugin integrates PyMOL (http://PyMOL.org/) with APBS (http://www.poissonboltzmann.org/apbs/).
+ 
+ Documentation may be found at
+@@ -2267,7 +2280,8 @@
+             self.update_buttonbox = Pmw.ButtonBox(self.mm_group.interior(), padx=0)
+             self.update_buttonbox.pack(side=LEFT)
+             self.update_buttonbox.add('Update',command=self.refresh)
+-            self.mm_group.pack(fill = 'both', expand = 1, padx = 4, pady = 5, side=TOP)
++            #self.mm_group.pack(fill = 'both', expand = 1, padx = 4, pady = 5, side=TOP)
++            self.mm_group.grid(padx = 4, pady = 5, sticky=(N, S, E, W))
+ 
+             self.ms_group = Pmw.Group(self.interior(),tag_text='Molecular Surface')
+             self.ms_buttonbox = Pmw.ButtonBox(self.ms_group.interior(), padx=0)
+@@ -2317,8 +2331,9 @@
+                                             )
+             bars = (self.mol_surf_low,self.mol_surf_middle,self.mol_surf_high)
+             Pmw.alignlabels(bars)
+-            for bar in bars: bar.pack(side=LEFT)
+-            self.ms_group.pack(fill = 'both', expand = 1, padx = 4, pady = 5, side=LEFT)
++            for bar in bars: bar.pack(expand = 1, side=LEFT)
++            #self.ms_group.pack(fill = 'both', expand = 1, padx = 4, pady = 5, side=LEFT)
++            self.ms_group.grid(column=0, row=1, padx = 4, pady = 5, rowspan = 2, sticky=(N, S, E, W))
+ 
+             self.fl_group = Pmw.Group(self.interior(),tag_text='Field Lines')
+             self.fl_buttonbox = Pmw.ButtonBox(self.fl_group.interior(), padx=0)
+@@ -2333,11 +2348,13 @@
+                                   text = """Follows same coloring as surface.""",
+                                   )
+             label.pack()
+-            self.fl_group.pack(fill = 'both', expand = 1, padx = 4, pady = 5, side=TOP)
++            #self.fl_group.pack(fill = 'both', expand = 1, padx = 4, pady = 5, side=TOP)
++            self.fl_group.grid(column = 1, row=0, padx = 4, pady = 5)
+ 
+             self.pi_group = Pmw.Group(self.interior(),tag_text='Positive Isosurface')
+             self.pi_buttonbox = Pmw.ButtonBox(self.pi_group.interior(), padx=0)
+-            self.pi_buttonbox.pack()
++            #self.pi_buttonbox.pack()
++            self.pi_buttonbox.grid()
+             self.pi_buttonbox.add('Show',command=self.showPosSurface)
+             self.pi_buttonbox.add('Hide',command=self.hidePosSurface)
+             self.pi_buttonbox.add('Update',command=self.updatePosSurface)
+@@ -2351,12 +2368,15 @@
+                                             datatype = 'real',
+                                             entryfield_validate = {'validator' : 'real', 'min':0}
+                                             )
+-            self.pos_surf_val.pack(side=LEFT)
+-            self.pi_group.pack(fill = 'both', expand = 1, padx = 4, pady = 5, side=LEFT)
++            #self.pos_surf_val.pack(side=LEFT)
++            self.pos_surf_val.grid()
++            #self.pi_group.pack(fill = 'both', expand = 1, padx = 4, pady = 5, side=LEFT)
++            self.pi_group.grid(column = 1, row = 1, padx = 4, pady = 5, sticky=(N, S, E, W))
+ 
+             self.ni_group = Pmw.Group(self.interior(),tag_text='Negative Isosurface')
+             self.ni_buttonbox = Pmw.ButtonBox(self.ni_group.interior(), padx=0)
+-            self.ni_buttonbox.pack()
++            #self.ni_buttonbox.pack()
++            self.ni_buttonbox.grid()
+             self.ni_buttonbox.add('Show',command=self.showNegSurface)
+             self.ni_buttonbox.add('Hide',command=self.hideNegSurface)
+             self.ni_buttonbox.add('Update',command=self.updateNegSurface)
+@@ -2370,8 +2390,10 @@
+                                             datatype = 'real',
+                                             entryfield_validate = {'validator' : 'real', 'max':0}
+                                             )
+-            self.neg_surf_val.pack(side=LEFT)
+-            self.ni_group.pack(fill = 'both', expand = 1, padx = 4, pady = 5, side=LEFT)
++            #self.neg_surf_val.pack(side=LEFT)
++            self.neg_surf_val.grid()
++            #self.ni_group.pack(fill = 'both', expand = 1, padx = 4, pady = 5, side=LEFT)
++            self.ni_group.grid(column = 1, row=2, padx = 4, pady = 5, sticky=(N, S, E, W))
+ 
+ 
+ 
Index: files/pmg_tk_platform.patch
===================================================================
--- files/pmg_tk_platform.patch	(revision 110542)
+++ files/pmg_tk_platform.patch	(working copy)
@@ -1,6 +1,6 @@
---- modules/pmg_tk/skins/normal/__init__.py.orig	2012-02-18 12:31:32.000000000 -0500
-+++ modules/pmg_tk/skins/normal/__init__.py	2012-02-18 12:32:53.000000000 -0500
-@@ -250,7 +250,7 @@
+--- modules/pmg_tk/skins/normal/__init__.py.orig
++++ modules/pmg_tk/skins/normal/__init__.py
+@@ -236,7 +236,7 @@
          self.buttonArea.destroy()
  
      def my_show(self,win,center=1):
@@ -9,7 +9,7 @@
              win.show()
          else: # autocenter, deiconify, and run mainloop
              # this is a workaround for a bug in the
-@@ -269,13 +269,13 @@
+@@ -255,13 +255,13 @@
  #         win.show()
              
      def my_withdraw(self,win):
@@ -25,7 +25,7 @@
              win.activate()
          else: # autocenter, deiconify, and run mainloop
              # this is a workaround for a bug in the
-@@ -296,7 +296,7 @@
+@@ -282,7 +282,7 @@
              win.mainloop()
              
      def my_deactivate(self,win):
@@ -34,11 +34,11 @@
              win.deactivate()
          else: # autocenter, deiconify, and run mainloop
              win.destroy()
---- modules/pmg_tk/PMGApp.py.orig	2012-02-18 12:35:29.000000000 -0500
-+++ modules/pmg_tk/PMGApp.py	2012-02-18 12:36:46.000000000 -0500
-@@ -219,7 +219,7 @@
+--- modules/pmg_tk/PMGApp.py.orig
++++ modules/pmg_tk/PMGApp.py
+@@ -184,7 +184,7 @@
+         self.fifo.put(cmmd)
  
- 
      def my_show(self,win,center=1):
 -        if sys.platform!='linux2':
 +        if (sys.platform!='linux2') and (sys.platform!='darwin'):
@@ -45,7 +45,7 @@
              win.show()
          else: # autocenter, deiconify, and run mainloop
              # this is a workaround for a bug in the
-@@ -237,7 +237,7 @@
+@@ -202,7 +202,7 @@
              win.deiconify()
  
      def my_withdraw(self,win):
Index: files/pymol-clang.diff
===================================================================
--- files/pymol-clang.diff	(revision 0)
+++ files/pymol-clang.diff	(working copy)
@@ -0,0 +1,636 @@
+Index: layer0/ShaderMgr.c
+===================================================================
+--- layer0/ShaderMgr.c	(revision 4039)
++++ layer0/ShaderMgr.c	(working copy)
+@@ -150,7 +150,7 @@ void CShaderPrg_ReplaceStringsInPlace(Py
+     while (replaceStrings[i]){
+       slen = strlen(replaceStrings[i]);
+       rlen = strlen(replaceStrings[i+1]);
+-      while(rstr=strstr(dest_line, replaceStrings[i])){
++      while((rstr=strstr(dest_line, replaceStrings[i]))){
+ 	strcpy(tmp_line, rstr + slen);
+ 	strcpy(rstr, replaceStrings[i+1]);
+ 	strcpy(rstr+rlen, tmp_line);
+@@ -488,15 +488,15 @@ void CShaderPrg_BindAttribLocations(PyMO
+   if (I){
+     GLenum err ;
+     glBindAttribLocation(I->id, VERTEX_POS, "a_Vertex");
+-    if (err = glGetError()){
++    if ((err = glGetError())){
+       PRINTFB(G, FB_ShaderMgr, FB_Warnings) "GLERROR: a_Vertex: %d\n", err ENDFB(G);
+     }
+     glBindAttribLocation(I->id, VERTEX_NORMAL, "a_Normal");
+-    if (err = glGetError()){
++    if ((err = glGetError())){
+       PRINTFB(G, FB_ShaderMgr, FB_Warnings) "GLERROR: a_Normal: %d\n", err ENDFB(G);
+     }
+     glBindAttribLocation(I->id, VERTEX_COLOR, "a_Color");
+-    if (err = glGetError()){
++    if ((err = glGetError())){
+       PRINTFB(G, FB_ShaderMgr, FB_Warnings) "GLERROR: a_Color: %d\n", err ENDFB(G);
+     }
+     CShaderPrg_Link(I);
+@@ -510,19 +510,19 @@ void CShaderPrg_BindCylinderAttribLocati
+   if (I){
+     GLenum err ;
+     glBindAttribLocation(I->id, CYLINDER_ORIGIN, "attr_origin");
+-    if (err = glGetError()){
++    if ((err = glGetError())){
+       PRINTFB(G, FB_ShaderMgr, FB_Warnings) "GLERROR: attr_origin: %d\n", err ENDFB(G);
+     }
+     glBindAttribLocation(I->id, CYLINDER_AXIS, "attr_axis");
+-    if (err = glGetError()){
++    if ((err = glGetError())){
+       PRINTFB(G, FB_ShaderMgr, FB_Warnings) "GLERROR: attr_axis: %d\n", err ENDFB(G);
+     }
+     glBindAttribLocation(I->id, CYLINDER_COLOR, "attr_color");
+-    if (err = glGetError()){
++    if ((err = glGetError())){
+       PRINTFB(G, FB_ShaderMgr, FB_Warnings) "GLERROR: attr_color: %d\n", err ENDFB(G);
+     }
+     glBindAttribLocation(I->id, CYLINDER_COLOR2, "attr_color2");
+-    if (err = glGetError()){
++    if ((err = glGetError())){
+       PRINTFB(G, FB_ShaderMgr, FB_Warnings) "GLERROR: attr_color2: %d\n", err ENDFB(G);
+     }
+     CShaderPrg_Link(I);	  
+@@ -842,11 +842,11 @@ void ShaderMgrConfig(PyMOLGlobals * G) {
+     if (indicatorShader){
+       GLenum err ;
+       glBindAttribLocation(indicatorShader->id, VERTEX_POS, "a_Vertex");
+-      if (err = glGetError()){
++      if ((err = glGetError())){
+ 	PRINTFB(G, FB_ShaderMgr, FB_Warnings) "GLERROR: a_Vertex: %d\n", err ENDFB(G);
+       }
+       glBindAttribLocation(indicatorShader->id, VERTEX_COLOR, "a_Color");
+-      if (err = glGetError()){
++      if ((err = glGetError())){
+ 	PRINTFB(G, FB_ShaderMgr, FB_Warnings) "GLERROR: a_Color: %d\n", err ENDFB(G);
+       }
+       CShaderPrg_Link(indicatorShader);	
+Index: layer0/Tetsurf.c
+===================================================================
+--- layer0/Tetsurf.c	(revision 4039)
++++ layer0/Tetsurf.c	(working copy)
+@@ -679,8 +679,7 @@ static void TetsurfPurge(CTetsurf * II)
+   if(I->Tri) {
+     VLAFreeP(I->Tri);
+   }
+-  if(I->PtLink);
+-  {
++  if(I->PtLink) {
+     VLAFreeP(I->PtLink);
+   }
+   if(I->VertexCodes) {
+Index: layer0/Map.c
+===================================================================
+--- layer0/Map.c	(revision 4039)
++++ layer0/Map.c	(working copy)
+@@ -588,7 +588,7 @@ int MapSetupExpress(MapType * I)
+   register int *link = I->Link;
+   register int st, flag;
+   register int *i_ptr3, *i_ptr4, *i_ptr5;
+-  register int *e_list;
++  register int *e_list = NULL;
+ #ifdef _MemoryCache_ON
+   register int block_offset = I->block_base + cCache_map_elist_offset;
+   register int group_id = I->group_id;
+Index: layer1/Basis.c
+===================================================================
+--- layer1/Basis.c	(revision 4039)
++++ layer1/Basis.c	(working copy)
+@@ -2868,11 +2868,11 @@ int BasisMakeMap(CBasis * I, int *vert2p
+   float ll;
+   CPrimitive *prm;
+   register int i;
+-  register int *tempRef;
+-  int n, h, q, x, y, z, j, k, l, e;
++  register int *tempRef = NULL;
++  int n = 0, h, q, x, y, z, j, k, l, e;
+   int extra_vert = 0;
+   float p[3], dd[3], *d1, *d2, vd[3], cx[3], cy[3];
+-  float *tempVertex;
++  float *tempVertex = NULL;
+   float xs, ys;
+   int remapMode = true;         /* remap mode means that some objects will span more
+                                  * than one voxel, so we have to worry about populating
+Index: layer1/CGO.c
+===================================================================
+--- layer1/CGO.c	(revision 4039)
++++ layer1/CGO.c	(working copy)
+@@ -47,7 +47,7 @@ Z* -------------------------------------
+ #define CLIP_NORMAL_VALUE(cv)  ((cv>1.f) ? 127 :  (cv < -1.f) ? -128 : pymol_roundf(((cv + 1.f)/2.f) * 255) - 128 )
+ 
+ #define CHECK_GL_ERROR_OK(printstr)	\
+-  if (err = glGetError()){    \
++  if ((err = glGetError())){    \
+      PRINTFB(I->G, FB_CGO, FB_Errors) printstr, err ENDFB(I->G);	   \
+   }
+ 
+@@ -2279,7 +2279,7 @@ void CGOCountNumVerticesForScreen(CGO *I
+   *num_total_vertices = 0;
+   *num_total_indexes = 0;
+ 
+-  while(op = (CGO_MASK & CGO_read_int(pc))) {
++  while((op = (CGO_MASK & CGO_read_int(pc)))) {
+     save_pc = pc;
+     err = 0;
+     switch (op) {
+@@ -4339,7 +4339,7 @@ CGO *CGOOptimizeGLSLCylindersToVBOIndexe
+     GL_C_INT_TYPE *indexVals = 0;
+     int tot = 4 * 4 * 3 * num_total_cylinders;
+     short copyToLeftOver, copyColorToLeftOver, copyPickColorToLeftOver, copyAlphaToLeftOver, copyToReturnCGO ;
+-    float *org_originVals;
++    float *org_originVals= NULL;
+     float *org_axisVals;
+     float *org_colorVals;
+     float *org_color2Vals = NULL;
+@@ -7101,7 +7101,7 @@ static void CGO_gl_draw_label(CCGORender
+   int  texture_id = CGO_get_int(*pc);
+   float worldPos[4], screenMin[3], screenMax[3], textExtent[4];
+   CShaderPrg * shaderPrg;
+-  int buf1, buf2, attr_worldpos, attr_screenoffset, attr_texcoords;
++  int buf1 = 0, buf2 = 0, attr_worldpos, attr_screenoffset, attr_texcoords;
+   copy3f(*pc, worldPos);  worldPos[3] = 1.f;
+   copy3f(*pc+3, screenMin);
+   copy3f(*pc+6, screenMax);
+@@ -7142,7 +7142,7 @@ static void CGO_gl_draw_texture(CCGORend
+   int  texture_id = CGO_get_int(*pc);
+   float worldPos[4], screenMin[3], screenMax[3], textExtent[4];
+   CShaderPrg * shaderPrg;
+-  int buf1, buf2, attr_worldpos, attr_screenoffset, attr_texcoords;
++  int buf1 = 0, buf2 = 0, attr_worldpos, attr_screenoffset, attr_texcoords;
+   copy3f(*pc, worldPos);  worldPos[3] = 1.f;
+   copy3f(*pc+3, screenMin);
+   copy3f(*pc+6, screenMax);
+@@ -9528,7 +9528,7 @@ int CGOCountNumberCustomCylinders(CGO *I
+ int CGOChangeShadersTo(CGO *I, int frommode, int tomode){
+   register float *pc = I->op;
+   int op = 0, totops = 0;
+-  while(op = (CGO_MASK & CGO_read_int(pc))) {
++  while((op = (CGO_MASK & CGO_read_int(pc)))) {
+     totops++;
+     switch (op) {
+     case CGO_ENABLE:
+Index: layer1/Ortho.c
+===================================================================
+--- layer1/Ortho.c	(revision 4039)
++++ layer1/Ortho.c	(working copy)
+@@ -1014,7 +1014,7 @@ void OrthoKey(PyMOLGlobals * G, unsigned
+         curLine = I->CurLine & OrthoSaveLines;
+         if(I->PromptChar) {
+           strcpy(buffer, I->Line[curLine]);
+-          if(PComplete(G, buffer + I->PromptChar, sizeof(OrthoLineType) - I->PromptChar));      /* just print, don't complete */
++          PComplete(G, buffer + I->PromptChar, sizeof(OrthoLineType) - I->PromptChar);      /* just print, don't complete */
+         }
+       }
+       break;
+@@ -1394,7 +1394,7 @@ void bg_grad(PyMOLGlobals * G) {
+ 
+   {
+     if (!I->bgCGO) {
+-      CGO *cgo = CGONew(G), *cgo2;
++      CGO *cgo = CGONew(G), *cgo2 = NULL;
+       ok &= CGOBegin(cgo, GL_TRIANGLE_STRIP);
+       if (ok)
+ 	ok &= CGOVertex(cgo, -1.f, -1.f, 0.98f);
+Index: layer1/P.c
+===================================================================
+--- layer1/P.c	(revision 4039)
++++ layer1/P.c	(working copy)
+@@ -2613,7 +2613,7 @@ int PFlush(PyMOLGlobals * G)
+       /* don't run if we're currently banned */
+       char *buffer = 0;
+       int size, curSize = 0;
+-      while(size = OrthoCommandOutSize(G)){
++      while((size = OrthoCommandOutSize(G))){
+ 	if (!curSize){
+ 	  buffer = VLACalloc(char, size);
+ 	  curSize = size;
+@@ -2657,7 +2657,7 @@ int PFlushFast(PyMOLGlobals * G)
+   int did_work = false;
+   char *buffer = 0;
+   int size, curSize = 0;
+-  while(size = OrthoCommandOutSize(G)){
++  while((size = OrthoCommandOutSize(G))){
+     if (!curSize){
+       buffer = VLACalloc(char, size);
+       curSize = size;
+Index: layer1/Extrude.c
+===================================================================
+--- layer1/Extrude.c	(revision 4039)
++++ layer1/Extrude.c	(working copy)
+@@ -753,7 +753,7 @@ int ExtrudeCGOSurfaceTube(CExtrude * I, 
+   float *v;
+   float *n;
+   float *c;
+-  float *sv, *sn, *tv, *tn, *tv1, *tn1, *TV, *TN;
++  float *sv, *sn, *tv, *tn, *tv1, *tn1, *TV, *TN = NULL;
+   float v0[3];
+   int start, stop;
+   int ok = true;
+@@ -1683,7 +1683,7 @@ int ExtrudeCGOSurfacePolygon(CExtrude * 
+   float *v;
+   float *n;
+   float *c;
+-  float *sv, *sn, *tv, *tn, *tv1, *tn1, *TV, *TN;
++  float *sv, *sn, *tv, *tn, *tv1, *tn1, *TV, *TN = NULL;
+   float v0[3];
+   int ok = true;
+ 
+@@ -1737,7 +1737,7 @@ int ExtrudeCGOSurfacePolygon(CExtrude * 
+     for(b = 0; ok && b < I->Ns; b += 2) {
+ #ifdef _PYMOL_CGO_DRAWARRAYS
+       int nverts = 2*I->N, pl = 0, plc = 0, damode = CGO_VERTEX_ARRAY | CGO_NORMAL_ARRAY | CGO_PICK_COLOR_ARRAY, nxtn = 3;
+-      float *vertexVals, *normalVals, *colorVals = 0, *nxtVals = 0, *tmp_ptr;
++      float *vertexVals = NULL, *normalVals, *colorVals = 0, *nxtVals = 0, *tmp_ptr;
+       float *pickColorVals;
+       GLenum mode = GL_LINE_STRIP;
+       if(SettingGetGlobal_i(I->G, cSetting_cartoon_debug) < 1.5)
+@@ -2048,7 +2048,7 @@ int ExtrudeCGOSurfacePolygonTaper(CExtru
+       i = I->i;
+       if (ok){
+ 	int nverts = 2*I->N, pl = 0, plc = 0, damode = CGO_VERTEX_ARRAY | CGO_NORMAL_ARRAY | CGO_PICK_COLOR_ARRAY, nxtn = 3;
+-	float *vertexVals, *normalVals, *colorVals = 0, *nxtVals = 0, *tmp_ptr;
++	float *vertexVals = NULL, *normalVals, *colorVals = 0, *nxtVals = 0, *tmp_ptr;
+ 	float *pickColorVals;
+ 	if (color_override)
+ 	  ok &= CGOColorv(cgo, color_override);
+@@ -2156,7 +2156,7 @@ int ExtrudeCGOSurfaceStrand(CExtrude * I
+   float *v;
+   float *n;
+   float *c;
+-  float *sv, *sn, *tv, *tn, *tv1, *tn1, *TV, *TN;
++  float *sv, *sn, *tv, *tn, *tv1, *tn1, *TV, *TN = NULL;
+   float v0[3], n0[3], s0[3], z[3] = { 1.0, 0.0, 1.0 };
+   int subN;
+   int ok = true;
+Index: layer1/Scene.c
+===================================================================
+--- layer1/Scene.c	(revision 4039)
++++ layer1/Scene.c	(working copy)
+@@ -7640,7 +7640,7 @@ void SceneUpdate(PyMOLGlobals * G, int f
+       /* update all gadgets first (single-threaded since they're thread-unsafe) */
+       rec = NULL;
+       while(ListIterate(I->Obj, rec, next)) {
+-        if((rec->obj->type == cObjectGadget)) {
++        if(rec->obj->type == cObjectGadget) {
+           if(rec->obj->fUpdate)
+             rec->obj->fUpdate(rec->obj);
+         }
+Index: layer1/Control.c
+===================================================================
+--- layer1/Control.c	(revision 4039)
++++ layer1/Control.c	(working copy)
+@@ -637,7 +637,7 @@ static void ControlDraw(Block * block OR
+       but_bottom = y - (cControlBoxSize - 1);
+       but_height = cControlBoxSize;
+ 
+-      if((but_num == I->Active)) {
++      if(but_num == I->Active) {
+         draw_button(but_left, but_bottom,
+                     but_width, but_height, lightEdge, darkEdge, pushed ORTHOCGOARGVAR);
+       } else if(((but_num == 6) && (SettingGetGlobal_b(G, cSetting_seq_view))) ||
+Index: layer2/RepCylBond.c
+===================================================================
+--- layer2/RepCylBond.c	(revision 4039)
++++ layer2/RepCylBond.c	(working copy)
+@@ -1998,7 +1998,7 @@ Rep *RepCylBondNew(CoordSet * cs, int st
+             I->NSPC++;
+           }
+ 
+-	  if(s2 && (!marked[b2]) && (!stick_ball_filter_single_atoms || (ord==1 || adjacent_atoms[a2] && adjacent_atoms[a2][0] > 1))) {
++	  if(s2 && (!marked[b2]) && (!stick_ball_filter_single_atoms || (ord==1 || (adjacent_atoms[a2] && adjacent_atoms[a2][0] > 1)))) {
+ 	      /* just once for each atom..., if stick_ball_filter is on, then only for atoms that have more than one adjacent atom */
+             float vdw =
+               stick_ball_ratio * ((ati2->protons == cAN_H) ? bd_radius : bd_radius_full);
+Index: layer2/RepSphere.c
+===================================================================
+--- layer2/RepSphere.c	(revision 4039)
++++ layer2/RepSphere.c	(working copy)
+@@ -1991,8 +1991,8 @@ static void RepSphereRender(RepSphere * 
+   int a;
+   SphereRec *sp = I->SP;
+   float alpha;
+-  int n_quad_verts;
+-  float radius;
++  int n_quad_verts = 0;
++  float radius = 0.0;
+   int ok = true;
+   short use_shader = SettingGetGlobal_b(G, cSetting_sphere_use_shader) & 
+                      SettingGetGlobal_b(G, cSetting_use_shaders);
+Index: layer2/ObjectMolecule2.c
+===================================================================
+--- layer2/ObjectMolecule2.c	(revision 4039)
++++ layer2/ObjectMolecule2.c	(working copy)
+@@ -3678,7 +3678,7 @@ int ObjectMoleculeNewFromPyList(PyMOLGlo
+ #else
+   int ok = true;
+   ObjectMolecule *I = NULL;
+-  int discrete_flag;
++  int discrete_flag = 0;
+   int ll;
+   (*result) = NULL;
+ 
+@@ -4305,7 +4305,7 @@ int ObjectMoleculeSort(ObjectMolecule * 
+   register int a, b;
+   CoordSet *cs, **dcs;
+   AtomInfoType *atInfo;
+-  int *dAtmToIdx;
++  int *dAtmToIdx = NULL;
+   int ok = true;
+   if(!I->DiscreteFlag) {        /* currently, discrete objects are never sorted */
+     int n_bytes = sizeof(int) * I->NAtom;
+Index: layer2/RepDot.c
+===================================================================
+--- layer2/RepDot.c	(revision 4039)
++++ layer2/RepDot.c	(working copy)
+@@ -192,7 +192,7 @@ static void RepDotRender(RepDot * I, Ren
+ 	      ok &= CGOColorv(cgo, v);
+ 	      v += 3;
+ 	    }
+-           /*      if(normals)  /* NORMALS do not get set for points 
++           /*      if(normals)  NORMALS do not get set for points 
+                    CGONormalv(cgo, v);*/
+ 	    v += 3;
+ 	    if (ok)
+@@ -210,7 +210,7 @@ static void RepDotRender(RepDot * I, Ren
+ 	    I->shaderCGO = CGOOptimizeSpheresToVBONonIndexed(cgo, CGO_BOUNDING_BOX_SZ + CGO_DRAW_SPHERE_BUFFERS_SZ);
+ 	    CHECKOK(ok, I->shaderCGO);
+ 	  } else {
+-	    CGO *convertcgo = CGOCombineBeginEnd(cgo, 0), *tmpCGO;
++	    CGO *convertcgo = CGOCombineBeginEnd(cgo, 0), *tmpCGO = NULL;
+ 	    CHECKOK(ok, convertcgo);
+ 	    if (ok)
+ 	      tmpCGO = CGOOptimizeToVBONotIndexed(convertcgo, CGO_BOUNDING_BOX_SZ + I->N * 3 + 7);
+@@ -344,7 +344,7 @@ Rep *RepDotDoNew(CoordSet * cs, int mode
+   float *countPtr = NULL;
+   int colorCnt, lastColor;
+   Vector3f v1;
+-  MapType *map;
++  MapType *map = NULL;
+   SphereRec *sp = G->Sphere->Sphere[0];
+   int ds;
+   float max_vdw = MAX_VDW;
+Index: layer2/RepSurface.c
+===================================================================
+--- layer2/RepSurface.c	(revision 4039)
++++ layer2/RepSurface.c	(working copy)
+@@ -3304,7 +3304,7 @@ static void RepSurfaceRender(RepSurface 
+ 	    if (ok)
+ 	      convertcgo->use_shader = true;
+ 	  } else if (I->Type == 2) {
+-	    CGO *convertcgo2, *simple;
++	    CGO *convertcgo2, *simple = NULL;
+ 	    convertcgo2 = CGOConvertLinesToShaderCylinders(I->shaderCGO, 0);
+ 	    CHECKOK(ok, convertcgo2);
+ 	    if (ok)
+@@ -4503,7 +4503,7 @@ static int SurfaceJobRun(PyMOLGlobals * 
+         }
+ 	ok &= !G->Interrupt;
+         if(ok) {
+-          MapType *map, *solv_map;
++          MapType *map, *solv_map = NULL;
+           map = MapNewFlagged(G, I->maxVdw + probe_rad_more,
+                               I->coord, VLAGetSize(I->coord) / 3, NULL, NULL);
+ 	  CHECKOK(ok, map);
+@@ -5747,7 +5747,7 @@ static SolventDot *SolventDotNew(PyMOLGl
+                 SurfaceJobAtomInfo *j_atom_info = atom_info + j;
+                 if(j > a)       /* only check if this is atom trails */
+                   if((!present) || present[j]) {
+-                    if((j_atom_info->vdw == a_atom_info->vdw)) {        /* handle singularities */
++                    if(j_atom_info->vdw == a_atom_info->vdw) {        /* handle singularities */
+                       float *v1 = coord + 3 * j;
+                       if((v0[0] == v1[0]) && (v0[1] == v1[1]) && (v0[2] == v1[2]))
+                         skip_flag = true;
+@@ -5842,7 +5842,7 @@ static SolventDot *SolventDotNew(PyMOLGl
+                   SurfaceJobAtomInfo *j_atom_info = atom_info + j;
+                   if(j > a)     /* only check if this is atom trails */
+                     if((!present) || present[j]) {
+-                      if((j_atom_info->vdw == a_atom_info->vdw)) {      /* handle singularities */
++                      if(j_atom_info->vdw == a_atom_info->vdw) {      /* handle singularities */
+                         float *v2 = coord + 3 * j;
+                         if((v0[0] == v2[0]) && (v0[1] == v2[1]) && (v0[2] == v2[2]))
+                           skip_flag = true;
+@@ -6002,7 +6002,7 @@ static SolventDot *SolventDotNew(PyMOLGl
+                   SurfaceJobAtomInfo *j_atom_info = atom_info + j;
+                   if(j > a)       /* only check if this is atom trails */
+                     if((!present) || present[j]) {
+-                      if((j_atom_info->vdw == a_atom_info->vdw)) {        /* handle singularities */
++                      if(j_atom_info->vdw == a_atom_info->vdw) {        /* handle singularities */
+                         float *v1 = coord + 3 * j;
+                         if((v0[0] == v1[0]) && (v0[1] == v1[1]) && (v0[2] == v1[2]))
+                           skip_flag = true;
+Index: layer2/RepCartoon.c
+===================================================================
+--- layer2/RepCartoon.c	(revision 4039)
++++ layer2/RepCartoon.c	(working copy)
+@@ -2615,7 +2615,7 @@ CGO *GenerateRepCartoonCGO(CoordSet *cs,
+ 
+ #ifdef _PYMOL_CGO_DRAWARRAYS
+ 	int nverts = nAt * 4, pl = 0;
+-	float *vertexVals, *tmp_ptr;
++	float *vertexVals = NULL, *tmp_ptr;
+ 	if (ok)
+ 	  vertexVals = CGODrawArrays(cgo, GL_LINES, CGO_VERTEX_ARRAY, nverts);      
+ 	CHECKOK(ok, vertexVals);
+Index: layer2/ObjectMolecule.c
+===================================================================
+--- layer2/ObjectMolecule.c	(revision 4039)
++++ layer2/ObjectMolecule.c	(working copy)
+@@ -1448,7 +1448,7 @@ CoordSet *ObjectMoleculeTOPStr2CoordSet(
+   int NPHIH, MPHIA, NHPARM, NPARM, NNB, NRES;
+   int NBONA, NTHETA, NPHIA, NUMBND, NUMANG, NPTRA;
+   int NATYP, NPHB, IFPERT, NBPER, NGPER, NDPER;
+-  int MBPER, MGPER, MDPER, IFBOX, NMXRS, IFCAP;
++  int MBPER, MGPER, MDPER, IFBOX = 0, NMXRS, IFCAP;
+   int NEXTRA, IPOL = 0;
+   int wid, col;
+   float BETA;
+@@ -2076,7 +2076,7 @@ CoordSet *ObjectMoleculeTOPStr2CoordSet(
+ 
+     if(IFBOX > 0) {
+ 
+-      int IPTRES, NSPM, NSPSOL;
++      int IPTRES, NSPM = 0, NSPSOL;
+ 
+       if(amber7) {
+         p = findflag(G, buffer, "SOLVENT_POINTERS", "3I8");
+@@ -4431,7 +4431,7 @@ int ObjectMoleculeAttach(ObjectMolecule 
+   AtomInfoType *ai;
+   int n, nn;
+   float v[3], v0[3], d;
+-  CoordSet *cs;
++  CoordSet *cs = NULL;
+   int ok = true;
+ 
+   ok &= ObjectMoleculeUpdateNeighbors(I);
+@@ -9755,7 +9755,7 @@ int ObjectMoleculeMerge(ObjectMolecule *
+ 			CoordSet * cs, int bondSearchFlag, int aic_mask, int invalidate)
+ {
+   PyMOLGlobals *G = I->Obj.G;
+-  int *index, *outdex, *a2i, *i2a;
++  int *index, *outdex, *a2i, *i2a = NULL;
+   BondType *bond = NULL;
+   register int a, b, lb = 0, ac;
+   int c, nb, a1, a2;
+@@ -10539,7 +10539,7 @@ void ObjectMoleculeSeleOp(ObjectMolecule
+                 rms = MatrixFitRMSTTTf(G, op->nvv1, op->vv1, vt, NULL, op->ttt);
+               else
+                 rms = MatrixGetRMS(G, op->nvv1, op->vv1, vt, NULL);
+-              if((op->i1 == 2)) {
++              if(op->i1 == 2) {
+                 ObjectMoleculeTransformTTTf(I, op->ttt, b);
+ 
+                 if(op->i3) {
+Index: layer3/Selector.c
+===================================================================
+--- layer3/Selector.c	(revision 4039)
++++ layer3/Selector.c	(working copy)
+@@ -8615,11 +8615,11 @@ static int SelectorSelect0(PyMOLGlobals 
+     for(a = cNDummyAtoms; a < I->NAtom; a++) {
+       b = i_obj[i_table[a].model]->AtomInfo[i_table[a].atom].protons;
+       base[0].sele[a] = (
+-          b >  2 && b <  5 ||
+-          b > 10 && b < 14 ||
+-          b > 18 && b < 32 ||
+-          b > 36 && b < 51 ||
+-          b > 54 && b < 85 ||
++          (b >  2 && b <  5) ||
++          (b > 10 && b < 14) ||
++          (b > 18 && b < 32) ||
++          (b > 36 && b < 51) ||
++          (b > 54 && b < 85) ||
+           b > 86);
+     }
+     break;
+Index: layer3/Executive.c
+===================================================================
+--- layer3/Executive.c	(revision 4039)
++++ layer3/Executive.c	(working copy)
+@@ -15915,7 +15915,7 @@ static int ExecutiveDrag(Block * block, 
+                           ExecutiveSpecSetVisibility(G, rec, true, mod, false);
+                           I->LastChanged = rec;
+                         }
+-                        if((mod == (cOrthoSHIFT | cOrthoCTRL))) {
++                        if(mod == (cOrthoSHIFT | cOrthoCTRL)) {
+                           if(rec != I->LastZoomed)
+                             ExecutiveWindowZoom(G, rec->name, 0.0F, -1, false, -1.0F,
+                                                 true);
+Index: layer3/PlugIOManager.c
+===================================================================
+--- layer3/PlugIOManager.c	(revision 4039)
++++ layer3/PlugIOManager.c	(working copy)
+@@ -225,7 +225,7 @@ int PlugIOManagerLoadTraj(PyMOLGlobals *
+                       ENDFB(G);
+                   }
+ 
+-                  if(stop > 0 && cnt >= stop || max > 0 && ncnt >= max) {
++                  if((stop > 0 && cnt >= stop) || (max > 0 && ncnt >= max)) {
+                     cs = NULL;
+                     break;
+                   }
+Index: layer4/Cmd.c
+===================================================================
+--- layer4/Cmd.c	(revision 4039)
++++ layer4/Cmd.c	(working copy)
+@@ -1846,7 +1846,7 @@ static PyObject *CmdMapHalve(PyObject * 
+ static PyObject *CmdGetRenderer(PyObject * self, PyObject * args)
+ {
+   PyMOLGlobals *G = NULL;
+-  char *vendor, *renderer, *version;
++  char *vendor = NULL, *renderer = NULL, *version = NULL;
+   int ok = false;
+   ok = PyArg_ParseTuple(args, "O", &self);
+   if(ok) {
+Index: contrib/uiuc/plugins/molfile_plugin/src/pbeqplugin.cpp
+===================================================================
+--- contrib/uiuc/plugins/molfile_plugin/src/pbeqplugin.cpp	(revision 4039)
++++ contrib/uiuc/plugins/molfile_plugin/src/pbeqplugin.cpp	(working copy)
+@@ -259,7 +259,7 @@ static int read_pbeq_data(void *v, int s
+         int addr = z*nclx*ncly + y*nclx + x;
+         if (fread(datablock + addr, 4, 1, fd) != 1) {
+           printf("pbeqplugin) Error reading potential map cell: %d,%d,%d\n", x, y, z);
+-          printf("pbeqplugin) offset: %d\n", ftell(fd));
++          printf("pbeqplugin) offset: %ld\n", ftell(fd));
+           return MOLFILE_ERROR;
+         }
+         count++;
+Index: contrib/uiuc/plugins/molfile_plugin/src/moldenplugin.c
+===================================================================
+--- contrib/uiuc/plugins/molfile_plugin/src/moldenplugin.c	(revision 4039)
++++ contrib/uiuc/plugins/molfile_plugin/src/moldenplugin.c	(working copy)
+@@ -99,7 +99,7 @@ static void *open_molden_read(const char
+                               const char *filetype,
+                               int *natoms) {
+   FILE *fd;
+-  qmdata_t *data;
++  qmdata_t *data = NULL;
+   moldendata_t *moldendata;
+   char buffer[1024];
+   char keystring[20];
+Index: contrib/uiuc/plugins/molfile_plugin/src/gamessplugin.c
+===================================================================
+--- contrib/uiuc/plugins/molfile_plugin/src/gamessplugin.c	(revision 4039)
++++ contrib/uiuc/plugins/molfile_plugin/src/gamessplugin.c	(working copy)
+@@ -375,7 +375,7 @@ static void *open_gamess_read(const char
+                   const char *filetype, int *natoms) {
+ 
+   FILE *fd;
+-  qmdata_t *data;
++  qmdata_t *data = NULL;
+   gmsdata *gms;
+ 
+   /* open the input file */
+Index: contrib/uiuc/plugins/molfile_plugin/src/maeffplugin.cpp
+===================================================================
+--- contrib/uiuc/plugins/molfile_plugin/src/maeffplugin.cpp	(revision 4039)
++++ contrib/uiuc/plugins/molfile_plugin/src/maeffplugin.cpp	(working copy)
+@@ -1983,7 +1983,7 @@ namespace {
+       }
+     }
+     catch (std::exception &e) {
+-      fprintf(stderr, e.what());
++      fprintf(stderr, "%s", e.what());
+       return MOLFILE_ERROR;
+     }
+     return MOLFILE_SUCCESS;
+Index: contrib/uiuc/plugins/molfile_plugin/src/graspplugin.cpp
+===================================================================
+--- contrib/uiuc/plugins/molfile_plugin/src/graspplugin.cpp	(revision 4039)
++++ contrib/uiuc/plugins/molfile_plugin/src/graspplugin.cpp	(working copy)
+@@ -104,7 +104,7 @@ void Get_Property_Values(GRASSP *grassp,
+ 
+   ///ojo aqui le quite el  !
+   if ((grassp->flag)!=POTENTIALS) {
+-    if (index >=0 && index <= 4) 
++    if (index <= 4) 
+       printf("graspplugin) No data available for '%s' option\n", name[index]);
+     else 
+       printf("graspplugin) out of range property, flag: %d index: %d\n", grassp->flag, index);
+Index: modules/cealign/src/tnt/tnt_fortran_array1d.h
+===================================================================
+--- modules/cealign/src/tnt/tnt_fortran_array1d.h	(revision 4039)
++++ modules/cealign/src/tnt/tnt_fortran_array1d.h	(working copy)
+@@ -221,7 +221,7 @@ inline Fortran_Array1D<T> Fortran_Array1
+ #ifdef TNT_DEBUG
+ 		std::cout << "entered subarray. \n";
+ #endif
+-	if ((i0 > 0) && (i1 < n_) || (i0 <= i1))
++	if (((i0 > 0) && (i1 < n_)) || (i0 <= i1))
+ 	{
+ 		Fortran_Array1D<T> X(*this);  /* create a new instance of this array. */
+ 		X.n_ = i1-i0+1;
+Index: modules/cealign/src/tnt/tnt_array1d.h
+===================================================================
+--- modules/cealign/src/tnt/tnt_array1d.h	(revision 4039)
++++ modules/cealign/src/tnt/tnt_array1d.h	(working copy)
+@@ -258,7 +258,7 @@ inline int Array1D<T>::ref_count() const
+ template <class T>
+ inline Array1D<T> Array1D<T>::subarray(int i0, int i1)
+ {
+-	if ((i0 >= 0) && (i1 < n_) || (i0 <= i1))
++	if (((i0 >= 0) && (i1 < n_)) || (i0 <= i1))
+ 	{
+ 		Array1D<T> X(*this);  /* create a new instance of this array. */
+ 		X.n_ = i1-i0+1;
Index: files/pymol_shell.diff
===================================================================
--- files/pymol_shell.diff	(revision 110542)
+++ files/pymol_shell.diff	(working copy)
@@ -1,6 +1,6 @@
---- /dev/null	2011-04-22 23:16:48.000000000 -0400
-+++ setup/pymol_macports	2011-04-22 23:19:48.000000000 -0400
-@@ -0,0 +1,16 @@
+--- /dev/null
++++ setup/pymol_macports
+@@ -0,0 +1,21 @@
 +#!/bin/sh
 +#
 +# PyMOL startup script
@@ -16,4 +16,9 @@
 +#
 +# python modules
 +#
-+exec @@PYTHON_BINARY@@ @@PYTHON_PKGDIR@@/pymol/__init__.py -d "_ set stereo_double_pump_mono,quiet=1" "$@"
++HasRadeon=($(system_profiler SPDisplaysDataType | grep Radeon ))
++if [[ -z "$HasRadeon"  ]];then
++  exec @@PYTHON_BINARY@@ @@PYTHON_PKGDIR@@/pymol/__init__.py -d "_ set stereo_double_pump_mono,quiet=1" "$@"
++else
++  exec @@PYTHON_BINARY@@ @@PYTHON_PKGDIR@@/pymol/__init__.py -d "_ set stereo_double_pump_mono,quiet=1" "-M" "$@"
++fi
Index: files/setup_py.diff
===================================================================
--- files/setup_py.diff	(revision 110542)
+++ files/setup_py.diff	(working copy)
@@ -1,11 +1,48 @@
---- setup.py.orig	2012-02-17 13:06:52.000000000 -0500
-+++ setup.py	2012-02-17 20:20:00.000000000 -0500
-@@ -153,7 +153,7 @@
-         outputheader.close()
-         outputfile.close()
+--- setup.py.orig
++++ setup.py
+@@ -47,18 +47,6 @@
+     pmap(_single_compile, objects)
+     return objects
  
--        EXT = "/opt/local"
-+        EXT = "@PREFIX@"
-         inc_dirs=["ov/src",
-                   "layer0","layer1","layer2",
-                   "layer3","layer4","layer5", 
+-# handle extra arguments
+-class options:
+-    osx_frameworks = False
+-
+-try:
+-    import argparse
+-    parser = argparse.ArgumentParser()
+-    parser.add_argument('--osx-frameworks', action="store_true")
+-    options, sys.argv = parser.parse_known_args(namespace=options)
+-except ImportError:
+-    print "argparse not available"
+-
+ jobs = int(os.getenv('JOBS', 0))
+ pmap = map if jobs == 1 else multiprocessing.pool.ThreadPool(jobs or None).map
+ 
+@@ -246,22 +234,17 @@
+     try:
+         prefix_path = os.environ['PREFIX_PATH'].split(os.pathsep)
+     except KeyError:
+-        prefix_path = ["/usr", "/usr/X11", "/opt/local", "/sw"]
++        prefix_path = ["@PREFIX@", "/usr", "/usr/X11"]
+ 
+     for prefix in prefix_path:
+         inc_dirs += filter(os.path.isdir, [prefix + s for s in ["/include", "/include/freetype2"]])
+         lib_dirs += filter(os.path.isdir, [prefix + s for s in ["/lib64", "/lib"]])
+ 
+-    if sys.platform == 'darwin' and options.osx_frameworks:
+-        ext_link_args += [
+-            "-framework", "OpenGL",
+-            "-framework", "GLUT",
+-        ]
+-    else:
+-        glut = posix_find_lib(['glut', 'freeglut'], lib_dirs)
+-        pyogl_libs += ["GL", "GLU", glut]
++    glut = posix_find_lib(['glut', 'freeglut'], lib_dirs)
+ 
+     libs += ["GLEW"]
++    pyogl_libs += ["GL", "GLU", glut]
++
+     libs += pyogl_libs
+ 
+     ext_comp_args += ["-ffast-math", "-funroll-loops", "-O3", "-fcommon"]
