From 64652b62797cefc4d6f527ee7c45c8f099b6b35e Mon Sep 17 00:00:00 2001 From: Alexey Prokhin Date: Tue, 2 Nov 2010 16:40:24 +0300 Subject: [PATCH] Fixed TypeInfo.next() for immutable types --- druntime.patch | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/druntime.patch b/druntime.patch index 2ecb3bda..c9ad7d28 100644 --- a/druntime.patch +++ b/druntime.patch @@ -907,8 +907,23 @@ diff -U 3 -H -d -r -N -x '*.mak' -x tk -x backend -x debug -x release -x '*_pch. diff -U 3 -H -d -r -N -x '*.mak' -x tk -x backend -x debug -x release -x '*_pch.h' -x Makefile -x '*.rej' -x '*~' -x '*.log' -x .svn -x '*pro.user' -x .directory -x cmake_install -x CMakeFiles -x .preprocessed.tmp -x 'Makefile.*' -x '*.orig' -- druntime-orig/src/object_.d druntime/src/object_.d --- druntime-orig/src/object_.d 2010-09-03 12:28:52.000000000 +0400 -+++ druntime/src/object_.d 2010-10-26 19:27:09.224925000 +0400 -@@ -1073,7 +1073,7 @@ ++++ druntime/src/object_.d 2010-11-02 16:35:18.353360002 +0300 +@@ -1040,7 +1040,13 @@ + override size_t tsize() { return base.tsize(); } + override void swap(void *p1, void *p2) { return base.swap(p1, p2); } + +- override TypeInfo next() { return base.next(); } ++ override TypeInfo next() ++ { ++ version(LDC) ++ return base; ++ else ++ return base.next(); ++ } + override uint flags() { return base.flags(); } + override void[] init() { return base.init(); } + +@@ -1073,7 +1079,7 @@ abstract class MemberInfo { @@ -917,7 +932,7 @@ diff -U 3 -H -d -r -N -x '*.mak' -x tk -x backend -x debug -x release -x '*_pch. } class MemberInfo_field : MemberInfo -@@ -1663,7 +1663,6 @@ +@@ -1663,7 +1669,6 @@ { int len = 0; ModuleReference *mr; @@ -925,7 +940,7 @@ diff -U 3 -H -d -r -N -x '*.mak' -x tk -x backend -x debug -x release -x '*_pch. for (mr = _Dmodule_ref; mr; mr = mr.next) len++; _moduleinfo_array = new ModuleInfo*[len]; -@@ -2025,7 +2024,6 @@ +@@ -2025,7 +2030,6 @@ _d_monitor_create(h); m = getMonitor(h); } @@ -933,7 +948,7 @@ diff -U 3 -H -d -r -N -x '*.mak' -x tk -x backend -x debug -x release -x '*_pch. IMonitor i = m.impl; if (i is null) -@@ -2124,7 +2122,7 @@ +@@ -2124,7 +2128,7 @@ size_t _aaLen(void* p); void* _aaGet(void** pp, TypeInfo keyti, size_t valuesize, ...); void* _aaGetRvalue(void* p, TypeInfo keyti, size_t valuesize, ...); @@ -942,7 +957,7 @@ diff -U 3 -H -d -r -N -x '*.mak' -x tk -x backend -x debug -x release -x '*_pch. void _aaDel(void* p, TypeInfo keyti, ...); void[] _aaValues(void* p, size_t keysize, size_t valuesize); void[] _aaKeys(void* p, size_t keysize, size_t valuesize); -@@ -2169,7 +2167,7 @@ +@@ -2169,7 +2173,7 @@ return *cast(Key[]*) &a; }