@@ -186,20 +186,18 @@ impl Arena {
186186 #[ inline]
187187 fn alloc_pod_inner ( & mut self , n_bytes : uint , align : uint ) -> * u8 {
188188 unsafe {
189- // XXX: Borrow check
190- let head = transmute_mut_region ( & mut self . pod_head ) ;
191-
192- let start = round_up_to ( head. fill , align) ;
189+ let this = transmute_mut_region ( self ) ;
190+ let start = round_up_to ( this. pod_head . fill , align) ;
193191 let end = start + n_bytes;
194- if end > at_vec:: capacity ( head . data ) {
195- return self . alloc_pod_grow ( n_bytes, align) ;
192+ if end > at_vec:: capacity ( this . pod_head . data ) {
193+ return this . alloc_pod_grow ( n_bytes, align) ;
196194 }
197- head . fill = end;
195+ this . pod_head . fill = end;
198196
199197 //debug!("idx = %u, size = %u, align = %u, fill = %u",
200198 // start, n_bytes, align, head.fill);
201199
202- ptr:: offset ( vec:: raw:: to_ptr ( head . data ) , start)
200+ ptr:: offset ( vec:: raw:: to_ptr ( this . pod_head . data ) , start)
203201 }
204202 }
205203
@@ -237,15 +235,15 @@ impl Arena {
237235 let after_tydesc = head. fill + sys:: size_of :: < * TyDesc > ( ) ;
238236 let start = round_up_to ( after_tydesc, align) ;
239237 let end = start + n_bytes;
240- if end > at_vec:: capacity ( head. data ) {
238+ if end > at_vec:: capacity ( self . head . data ) {
241239 return self . alloc_nonpod_grow ( n_bytes, align) ;
242240 }
243241 head. fill = round_up_to ( end, sys:: pref_align_of :: < * TyDesc > ( ) ) ;
244242
245243 //debug!("idx = %u, size = %u, align = %u, fill = %u",
246244 // start, n_bytes, align, head.fill);
247245
248- let buf = vec:: raw:: to_ptr ( head. data ) ;
246+ let buf = vec:: raw:: to_ptr ( self . head . data ) ;
249247 return ( ptr:: offset ( buf, tydesc_start) , ptr:: offset ( buf, start) ) ;
250248 }
251249 }
0 commit comments