MCPcopy Create free account
hub / github.com/ObEngine/ObEngine / luaO_chunkid

Function luaO_chunkid

extlibs/lua/src/lobject.c:548–582  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

546#define addstr(a,b,l) ( memcpy(a,b,(l) * sizeof(char)), a += (l) )
547
548void luaO_chunkid (char *out, const char *source, size_t srclen) {
549 size_t bufflen = LUA_IDSIZE; /* free space in buffer */
550 if (*source == '=') { /* 'literal' source */
551 if (srclen <= bufflen) /* small enough? */
552 memcpy(out, source + 1, srclen * sizeof(char));
553 else { /* truncate it */
554 addstr(out, source + 1, bufflen - 1);
555 *out = '\0';
556 }
557 }
558 else if (*source == '@') { /* file name */
559 if (srclen <= bufflen) /* small enough? */
560 memcpy(out, source + 1, srclen * sizeof(char));
561 else { /* add '...' before rest of name */
562 addstr(out, RETS, LL(RETS));
563 bufflen -= LL(RETS);
564 memcpy(out, source + 1 + srclen - bufflen, bufflen * sizeof(char));
565 }
566 }
567 else { /* string; format as [string "source"] */
568 const char *nl = strchr(source, '\n'); /* find first new line (if any) */
569 addstr(out, PRE, LL(PRE)); /* add prefix */
570 bufflen -= LL(PRE RETS POS) + 1; /* save space for prefix+suffix+'\0' */
571 if (srclen < bufflen && nl == NULL) { /* small one-line source? */
572 addstr(out, source, srclen); /* keep it */
573 }
574 else {
575 if (nl != NULL) srclen = nl - source; /* stop at first newline */
576 if (srclen > bufflen) srclen = bufflen;
577 addstr(out, source, srclen);
578 addstr(out, RETS, LL(RETS));
579 }
580 memcpy(out, POS, (LL(POS) + 1) * sizeof(char));
581 }
582}
583

Callers 2

funcinfoFunction · 0.85
luaG_addinfoFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected