github.com/llvm-mirror/llgo@v0.0.0-20190322182713-bf6f0a60fce1/third_party/gofrontend/libgo/runtime/go-strslice.c (about)

     1  /* go-strslice.c -- the go string slice function.
     2  
     3     Copyright 2009 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 "go-panic.h"
     8  #include "runtime.h"
     9  #include "arch.h"
    10  #include "malloc.h"
    11  
    12  String
    13  __go_string_slice (String s, intgo start, intgo end)
    14  {
    15    intgo len;
    16    String ret;
    17  
    18    len = s.len;
    19    if (end == -1)
    20      end = len;
    21    if (start > len || end < start || end > len)
    22      runtime_panicstring ("string index out of bounds");
    23    ret.str = s.str + start;
    24    ret.len = end - start;
    25    return ret;
    26  }