| 
									
										
										
										
											2010-02-01 23:05:15 -08:00
										 |  |  | // $G $D/$F.go && $L $F.$A && ./$A.out || echo BUG: bug246 | 
					
						
							| 
									
										
										
										
											2010-01-18 18:26:10 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | // Copyright 2009 The Go Authors. All rights reserved. | 
					
						
							|  |  |  | // Use of this source code is governed by a BSD-style | 
					
						
							|  |  |  | // license that can be found in the LICENSE file. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | package main | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import "unsafe" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func main() { | 
					
						
							|  |  |  | 	// works | 
					
						
							| 
									
										
										
										
											2010-02-01 23:05:15 -08:00
										 |  |  | 	addr := uintptr(0x234) | 
					
						
							|  |  |  | 	x1 := (*int)(unsafe.Pointer(addr)) | 
					
						
							| 
									
										
										
										
											2010-01-18 18:26:10 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	// fails | 
					
						
							| 
									
										
										
										
											2010-02-01 23:05:15 -08:00
										 |  |  | 	x2 := (*int)(unsafe.Pointer(uintptr(0x234))) | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | 	if x1 != x2 { | 
					
						
							|  |  |  | 		panicln("mismatch", x1, x2) | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2010-01-18 18:26:10 -08:00
										 |  |  | } |