MCPcopy Create free account
hub / github.com/EmmyLua/EmmyLuaDebugger / luaO_chunkid

Function luaO_chunkid

third-party/lua-5.4.6/src/lobject.c:567–601  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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

Callers 2

funcinfoFunction · 0.70
luaG_addinfoFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected