Merge pull request #1506 from akoeplinger/fix-paste-test
[mono.git] / mcs / class / System.Drawing / System.Drawing.Imaging / ColorPalette.cs
index 7b2311355372082aa89bb487c9e1e64705f47411..28599a7b47ac2b4be9aeafb6465542b4c20cc5f8 100644 (file)
@@ -50,7 +50,6 @@ namespace System.Drawing.Imaging
                //
                internal ColorPalette ()
                {
-                       flags = 0;
                        entries = new Color [0];
                }
 
@@ -70,7 +69,6 @@ namespace System.Drawing.Imaging
                                return flags;
                        }
                }
-#if !TARGET_JVM
                /* Caller should call FreeHGlobal*/
                internal IntPtr getGDIPalette() 
                {
@@ -90,7 +88,7 @@ namespace System.Drawing.Imaging
                        }                       
                        
                        Marshal.StructureToPtr (palette, lfBuffer, false);      
-                       Marshal.Copy (values, 0, (IntPtr) (lfBuffer.ToInt32() + Marshal.SizeOf (palette)), values.Length);
+                       Marshal.Copy (values, 0, (IntPtr) (lfBuffer.ToInt64() + Marshal.SizeOf (palette)), values.Length);
                        
                        return lfBuffer;
                }
@@ -98,19 +96,20 @@ namespace System.Drawing.Imaging
                internal void setFromGDIPalette (IntPtr palette)
                {
                        IntPtr ptr = palette;
-                       int cnt, color;                 
+                       int cnt, color;
+                       int offset;
 
-                       flags = Marshal.ReadInt32 (ptr); ptr = (IntPtr) (ptr.ToInt32() + 4);
-                       cnt = Marshal.ReadInt32 (ptr); ptr = (IntPtr) (ptr.ToInt32() + 4);
+                       flags = Marshal.ReadInt32 (ptr); ptr = (IntPtr) (ptr.ToInt64() + 4);
+                       cnt = Marshal.ReadInt32 (ptr); ptr = (IntPtr) (ptr.ToInt64() + 4);
                                                
                        entries = new Color [cnt];                      
                                                
+                       offset = 0;
                        for (int i = 0; i < cnt; i++) {
-                               color = Marshal.ReadInt32 (ptr);                                
+                               color = Marshal.ReadInt32 (ptr, offset);
                                entries[i] = Color.FromArgb (color);
-                               ptr = (IntPtr) (ptr.ToInt32() + 4);
+                               offset += 4;
                        }
                }
-#endif
        }
 }