1 /* go-string-to-byte-array.c -- convert a string to an array of bytes in Go. 2 3 Copyright 2010 The Go Authors. All rights reserved. 4 Use of this source code is governed by a BSD-style 5 license that can be found in the LICENSE file. */ 6 7 #include "runtime.h" 8 #include "array.h" 9 #include "arch.h" 10 #include "malloc.h" 11 12 struct __go_open_array __go_string_to_byte_array(String str)13__go_string_to_byte_array (String str) 14 { 15 uintptr cap; 16 unsigned char *data; 17 struct __go_open_array ret; 18 19 cap = runtime_roundupsize (str.len); 20 data = (unsigned char *) runtime_mallocgc (cap, 0, FlagNoScan | FlagNoZero); 21 __builtin_memcpy (data, str.str, str.len); 22 if (cap != (uintptr) str.len) 23 __builtin_memset (data + str.len, 0, cap - (uintptr) str.len); 24 ret.__values = (void *) data; 25 ret.__count = str.len; 26 ret.__capacity = str.len; 27 return ret; 28 } 29