Advertisement
Guest User

Untitled

a guest
Mar 1st, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.92 KB | None | 0 0
  1. # HG changeset patch
  2. # User Dmitry Volyntsev <xeioex@nginx.com>
  3. # Date 1551146886 -28800
  4. # Node ID dd4597e5962e7504a1346bfd392dc39af739ddd4
  5. # Parent d498378197210c8f226f32018031f054150785e5
  6. Improved checking filename is not empty.
  7.  
  8. file->start can be non NULL for empty string.
  9.  
  10. diff -r d49837819721 -r dd4597e5962e njs/njs_parser.c
  11. --- a/njs/njs_parser.c Mon Feb 25 19:00:56 2019 +0300
  12. +++ b/njs/njs_parser.c Tue Feb 26 10:08:06 2019 +0800
  13. @@ -233,7 +233,7 @@ njs_parser_scope_begin(njs_vm_t *vm, njs
  14. scope->values[0] = values;
  15. scope->values[1] = NULL;
  16.  
  17. - if (parser->lexer->file.start != NULL) {
  18. + if (parser->lexer->file.length != 0) {
  19. ret = njs_name_copy(vm, &scope->file, &parser->lexer->file);
  20. if (nxt_slow_path(ret != NXT_OK)) {
  21. return NXT_ERROR;
  22. @@ -2758,7 +2758,7 @@ njs_parser_trace_handler(nxt_trace_t *tr
  23. if (vm->parser != NULL) {
  24. lexer = vm->parser->lexer;
  25.  
  26. - if (lexer->file.start != NULL) {
  27. + if (lexer->file.length != 0) {
  28. njs_internal_error(vm, "%s in %V:%uD", start, &lexer->file,
  29. lexer->line);
  30. } else {
  31. @@ -2795,7 +2795,7 @@ njs_parser_scope_error(njs_vm_t *vm, njs
  32. p = end - width;
  33. }
  34.  
  35. - if (file->start != NULL) {
  36. + if (file->length != 0) {
  37. p = nxt_sprintf(p, end, " in %V:%uD", file, line);
  38.  
  39. } else {
  40. # HG changeset patch
  41. # User hongzhidao <hongzhidao@gmail.com>
  42. # Date 1551147113 -28800
  43. # Node ID 84cbda896e475a7cd0fc360753eff5df19faec5a
  44. # Parent dd4597e5962e7504a1346bfd392dc39af739ddd4
  45. Improved parser syntax error.
  46.  
  47. diff -r dd4597e5962e -r 84cbda896e47 njs/njs_parser.c
  48. --- a/njs/njs_parser.c Tue Feb 26 10:08:06 2019 +0800
  49. +++ b/njs/njs_parser.c Tue Feb 26 10:11:53 2019 +0800
  50. @@ -279,30 +279,28 @@ njs_parser_statement_chain(njs_vm_t *vm,
  51.  
  52. token = njs_parser_statement(vm, parser, token);
  53.  
  54. - if (nxt_fast_path(token > NJS_TOKEN_ILLEGAL)) {
  55. -
  56. - if (parser->node != NULL) {
  57. - /* The statement is not empty block or just semicolon. */
  58. -
  59. - node = njs_parser_node_new(vm, parser, NJS_TOKEN_STATEMENT);
  60. - if (nxt_slow_path(node == NULL)) {
  61. - return NJS_TOKEN_ERROR;
  62. - }
  63. -
  64. - node->left = last;
  65. - node->right = parser->node;
  66. - *dest = node;
  67. -
  68. - while (token == NJS_TOKEN_SEMICOLON) {
  69. - token = njs_parser_token(parser);
  70. - if (nxt_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
  71. - break;
  72. - }
  73. + if (nxt_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
  74. + return njs_parser_unexpected_token(vm, parser, token);
  75. + }
  76. +
  77. + if (parser->node != NULL) {
  78. + /* The statement is not empty block or just semicolon. */
  79. +
  80. + node = njs_parser_node_new(vm, parser, NJS_TOKEN_STATEMENT);
  81. + if (nxt_slow_path(node == NULL)) {
  82. + return NJS_TOKEN_ERROR;
  83. + }
  84. +
  85. + node->left = last;
  86. + node->right = parser->node;
  87. + *dest = node;
  88. +
  89. + while (token == NJS_TOKEN_SEMICOLON) {
  90. + token = njs_parser_token(parser);
  91. + if (nxt_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
  92. + break;
  93. }
  94. }
  95. -
  96. - } else if (!njs_is_error(&vm->retval)) {
  97. - (void) njs_parser_unexpected_token(vm, parser, token);
  98. }
  99.  
  100. return token;
  101. @@ -2812,6 +2810,10 @@ njs_parser_lexer_error(njs_vm_t *vm, njs
  102. {
  103. va_list args;
  104.  
  105. + if (njs_is_error(&vm->retval)) {
  106. + return;
  107. + }
  108. +
  109. va_start(args, fmt);
  110. njs_parser_scope_error(vm, parser->scope, type, parser->lexer->line, fmt,
  111. args);
  112. # HG changeset patch
  113. # User hongzhidao <hongzhidao@gmail.com>
  114. # Date 1551173402 -28800
  115. # Node ID 22936042fb972c0c00490167e7a61f2c6af502a9
  116. # Parent 84cbda896e475a7cd0fc360753eff5df19faec5a
  117. Improved parser scope filename.
  118.  
  119. diff -r 84cbda896e47 -r 22936042fb97 njs/njs_parser.c
  120. --- a/njs/njs_parser.c Tue Feb 26 10:11:53 2019 +0800
  121. +++ b/njs/njs_parser.c Tue Feb 26 17:30:02 2019 +0800
  122. @@ -164,9 +164,9 @@ njs_parser(njs_vm_t *vm, njs_parser_t *p
  123. static njs_ret_t
  124. njs_parser_scope_begin(njs_vm_t *vm, njs_parser_t *parser, njs_scope_t type)
  125. {
  126. - nxt_int_t ret;
  127. nxt_uint_t nesting;
  128. nxt_array_t *values;
  129. + njs_lexer_t *lexer;
  130. njs_parser_scope_t *scope, *parent;
  131.  
  132. nesting = 0;
  133. @@ -233,11 +233,10 @@ njs_parser_scope_begin(njs_vm_t *vm, njs
  134. scope->values[0] = values;
  135. scope->values[1] = NULL;
  136.  
  137. - if (parser->lexer->file.length != 0) {
  138. - ret = njs_name_copy(vm, &scope->file, &parser->lexer->file);
  139. - if (nxt_slow_path(ret != NXT_OK)) {
  140. - return NXT_ERROR;
  141. - }
  142. + lexer = parser->lexer;
  143. +
  144. + if (lexer->file.length != 0) {
  145. + nxt_file_basename(&lexer->file, &scope->file);
  146. }
  147.  
  148. parent = parser->scope;
  149. diff -r 84cbda896e47 -r 22936042fb97 njs/njs_shell.c
  150. --- a/njs/njs_shell.c Tue Feb 26 10:11:53 2019 +0800
  151. +++ b/njs/njs_shell.c Tue Feb 26 17:30:02 2019 +0800
  152. @@ -218,7 +218,6 @@ main(int argc, char **argv)
  153. if (opts.file != NULL) {
  154. vm_options.file.start = (u_char *) opts.file;
  155. vm_options.file.length = strlen(opts.file);
  156. - nxt_file_basename(&vm_options.file, &vm_options.file);
  157.  
  158. } else {
  159. vm_options.file = nxt_string_value("shell");
  160. # HG changeset patch
  161. # User hongzhidao <hongzhidao@gmail.com>
  162. # Date 1551173579 -28800
  163. # Node ID 9f0a23b7d8a5ddb2c7deccff8f00dd1a570a4d03
  164. # Parent 22936042fb972c0c00490167e7a61f2c6af502a9
  165. Style.
  166.  
  167. diff -r 22936042fb97 -r 9f0a23b7d8a5 njs/njs_disassembler.c
  168. --- a/njs/njs_disassembler.c Tue Feb 26 17:30:02 2019 +0800
  169. +++ b/njs/njs_disassembler.c Tue Feb 26 17:32:59 2019 +0800
  170. @@ -412,39 +412,39 @@ njs_disassemble(u_char *start, u_char *e
  171. n = nxt_nitems(code_names);
  172.  
  173. do {
  174. - if (operation == code_name->operation) {
  175. - name = &code_name->name;
  176. + if (operation == code_name->operation) {
  177. + name = &code_name->name;
  178.  
  179. - if (code_name->size == sizeof(njs_vmcode_3addr_t)) {
  180. - code3 = (njs_vmcode_3addr_t *) p;
  181. + if (code_name->size == sizeof(njs_vmcode_3addr_t)) {
  182. + code3 = (njs_vmcode_3addr_t *) p;
  183.  
  184. - printf("%05zd %*s %04zX %04zX %04zX\n",
  185. - p - start, (int) name->length, name->start,
  186. - (size_t) code3->dst, (size_t) code3->src1,
  187. - (size_t) code3->src2);
  188. + printf("%05zd %*s %04zX %04zX %04zX\n",
  189. + p - start, (int) name->length, name->start,
  190. + (size_t) code3->dst, (size_t) code3->src1,
  191. + (size_t) code3->src2);
  192.  
  193. - } else if (code_name->size == sizeof(njs_vmcode_2addr_t)) {
  194. - code2 = (njs_vmcode_2addr_t *) p;
  195. + } else if (code_name->size == sizeof(njs_vmcode_2addr_t)) {
  196. + code2 = (njs_vmcode_2addr_t *) p;
  197.  
  198. - printf("%05zd %*s %04zX %04zX\n",
  199. - p - start, (int) name->length, name->start,
  200. - (size_t) code2->dst, (size_t) code2->src);
  201. + printf("%05zd %*s %04zX %04zX\n",
  202. + p - start, (int) name->length, name->start,
  203. + (size_t) code2->dst, (size_t) code2->src);
  204.  
  205. - } else if (code_name->size == sizeof(njs_vmcode_1addr_t)) {
  206. - code1 = (njs_vmcode_1addr_t *) p;
  207. + } else if (code_name->size == sizeof(njs_vmcode_1addr_t)) {
  208. + code1 = (njs_vmcode_1addr_t *) p;
  209.  
  210. - printf("%05zd %*s %04zX\n",
  211. - p - start, (int) name->length, name->start,
  212. - (size_t) code1->index);
  213. - }
  214. + printf("%05zd %*s %04zX\n",
  215. + p - start, (int) name->length, name->start,
  216. + (size_t) code1->index);
  217. + }
  218.  
  219. - p += code_name->size;
  220. + p += code_name->size;
  221.  
  222. - goto next;
  223. - }
  224. + goto next;
  225. + }
  226.  
  227. - code_name++;
  228. - n--;
  229. + code_name++;
  230. + n--;
  231.  
  232. } while (n != 0);
  233.  
  234. # HG changeset patch
  235. # User hongzhidao <hongzhidao@gmail.com>
  236. # Date 1551147554 -28800
  237. # Node ID bf1ac9f4a61dbb8bfef2b63e8b226c05cbfe9980
  238. # Parent 9f0a23b7d8a5ddb2c7deccff8f00dd1a570a4d03
  239. Refactored njs_value_index().
  240.  
  241. diff -r 9f0a23b7d8a5 -r bf1ac9f4a61d njs/njs_string.c
  242. --- a/njs/njs_string.c Tue Feb 26 17:32:59 2019 +0800
  243. +++ b/njs/njs_string.c Tue Feb 26 10:19:14 2019 +0800
  244. @@ -4313,22 +4313,19 @@ uri_error:
  245. static nxt_int_t
  246. njs_values_hash_test(nxt_lvlhsh_query_t *lhq, void *data)
  247. {
  248. + u_char *start;
  249. njs_value_t *value;
  250.  
  251. value = data;
  252.  
  253. - if (lhq->key.length == sizeof(njs_value_t)
  254. - && memcmp(lhq->key.start, value, sizeof(njs_value_t)) == 0)
  255. - {
  256. - return NXT_OK;
  257. + if (lhq->key.length == sizeof(njs_value_t)) {
  258. + start = (u_char *) value;
  259. +
  260. + } else {
  261. + start = value->long_string.data->start;
  262. }
  263.  
  264. - if (njs_is_string(value)
  265. - && value->long_string.size == lhq->key.length
  266. - && memcmp(value->long_string.data->start, lhq->key.start,
  267. - lhq->key.length)
  268. - == 0)
  269. - {
  270. + if (memcmp(lhq->key.start, start, lhq->key.length) == 0) {
  271. return NXT_OK;
  272. }
  273.  
  274. @@ -4358,18 +4355,22 @@ njs_value_index(njs_vm_t *vm, const njs_
  275. u_char *start;
  276. uint32_t value_size, size, length;
  277. nxt_int_t ret;
  278. + nxt_bool_t long_string;
  279. njs_value_t *value;
  280. njs_string_t *string;
  281. nxt_lvlhsh_t *values_hash;
  282. nxt_lvlhsh_query_t lhq;
  283.  
  284. - if (src->type != NJS_STRING || src->short_string.size != NJS_STRING_LONG) {
  285. + long_string = src->type == NJS_STRING
  286. + && src->short_string.size == NJS_STRING_LONG;
  287. +
  288. + if (long_string) {
  289. + size = src->long_string.size;
  290. + start = src->long_string.data->start;
  291. +
  292. + } else {
  293. size = sizeof(njs_value_t);
  294. start = (u_char *) src;
  295. -
  296. - } else {
  297. - size = src->long_string.size;
  298. - start = src->long_string.data->start;
  299. }
  300.  
  301. lhq.key_hash = nxt_djb_hash(start, size);
  302. @@ -4386,7 +4387,7 @@ njs_value_index(njs_vm_t *vm, const njs_
  303. } else {
  304. value_size = 0;
  305.  
  306. - if (start != (u_char *) src) {
  307. + if (long_string) {
  308. /* Long string value is allocated together with string. */
  309. value_size = sizeof(njs_value_t) + sizeof(njs_string_t);
  310.  
  311. @@ -4406,7 +4407,7 @@ njs_value_index(njs_vm_t *vm, const njs_
  312.  
  313. *value = *src;
  314.  
  315. - if (start != (u_char *) src) {
  316. + if (long_string) {
  317. string = (njs_string_t *) ((u_char *) value + sizeof(njs_value_t));
  318. value->long_string.data = string;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement