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