4550 static char *
4551 get_source_line(const char *src, int lineno)
4552 {
4553 const char *s = NULL;
4554 const char *next = src;
4555 int current = 0;
4556
4557 while (current < lineno)
when considering range: -0x80000000 <= value <= 0
taking False path
4558 {
4559 s = next;
4560 next = strchr(s + 1, '\n');
4561 current++;
4562 if (next == NULL)
4563 break;
4564 }
4565
4566 if (current != lineno)
when considering value == (int)0 from plpython.c:4551
taking False path
4567 return NULL;
4568
4569 while (*s && isspace((unsigned char) *s))
dereferencing NULL (*s) at plpython.c:4569
4570 s++;
4571
4572 if (next == NULL)
4573 return pstrdup(s);
4574
4575 /*
4576 * Sanity check, next < s if the line was all-whitespace, which should
4577 * never happen if Python reported a frame created on that line, but check
4578 * anyway.
4579 */
4580 if (next < s)
4581 return NULL;
4582
4583 return pnstrdup(s, next - s);
4584 }