MCPcopy Create free account
hub / github.com/CppCXY/EmmyLuaCodeStyle / luaO_chunkid

Function luaO_chunkid

3rd/lua-5.4.3/src/lobject.c:557–591  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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

Callers 2

funcinfoFunction · 0.85
luaG_addinfoFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected