{"action":"created","comment":{"url":"https://api.github.com/repos/matplotlib/matplotlib/pulls/comments/26032096","id":26032096,"diff_hunk":"@@ -939,79 +939,151 @@ void cleanup_path(PathIterator &path,\n     }\n }\n \n+void quad2cubic(double x0, double y0,\n+                double x1, double y1,\n+                double x2, double y2,\n+                double *outx, double *outy)\n+{\n+\n+    outx[0] = x0 + 2./3. * (x1 - x0);\n+    outy[0] = y0 + 2./3. * (y1 - y0);\n+    outx[1] = outx[0] + 1./3. * (x2 - x0);\n+    outy[1] = outy[0] + 1./3. * (y2 - y0);\n+    outx[2] = x2;\n+    outy[2] = y2;\n+}\n+\n+char *__append_to_string(char *p, char *buffer, size_t buffersize,\n+                         const char *content)\n+{\n+    for (const char *i = content; *i; ++i) {\n+        if (p < buffer || p - buffer >= (int)buffersize) {\n+            return p;","path":"src/_path.h","position":23,"original_position":23,"commit_id":"1f0e4ad2fc091955273baf5a5083f66cfd51b74d","original_commit_id":"1f0e4ad2fc091955273baf5a5083f66cfd51b74d","user":{"login":"mdboom","id":38294,"avatar_url":"https://avatars.githubusercontent.com/u/38294?v=3","gravatar_id":"","url":"https://api.github.com/users/mdboom","html_url":"https://github.com/mdboom","followers_url":"https://api.github.com/users/mdboom/followers","following_url":"https://api.github.com/users/mdboom/following{/other_user}","gists_url":"https://api.github.com/users/mdboom/gists{/gist_id}","starred_url":"https://api.github.com/users/mdboom/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mdboom/subscriptions","organizations_url":"https://api.github.com/users/mdboom/orgs","repos_url":"https://api.github.com/users/mdboom/repos","events_url":"https://api.github.com/users/mdboom/events{/privacy}","received_events_url":"https://api.github.com/users/mdboom/received_events","type":"User","site_admin":false},"body":"It could, I suppose -- I'll see how much complication that would add...  It's sort of a case that should never happen in practice, I'm just protecting against some completely theoretical security flaw buffer overflow here.","created_at":"2015-03-09T12:42:39Z","updated_at":"2015-03-09T12:42:39Z","html_url":"https://github.com/matplotlib/matplotlib/pull/4197#discussion_r26032096","pull_request_url":"https://api.github.com/repos/matplotlib/matplotlib/pulls/4197","_links":{"self":{"href":"https://api.github.com/repos/matplotlib/matplotlib/pulls/comments/26032096"},"html":{"href":"https://github.com/matplotlib/matplotlib/pull/4197#discussion_r26032096"},"pull_request":{"href":"https://api.github.com/repos/matplotlib/matplotlib/pulls/4197"}}},"pull_request":{"url":"https://api.github.com/repos/matplotlib/matplotlib/pulls/4197","id":30666536,"html_url":"https://github.com/matplotlib/matplotlib/pull/4197","diff_url":"https://github.com/matplotlib/matplotlib/pull/4197.diff","patch_url":"https://github.com/matplotlib/matplotlib/pull/4197.patch","issue_url":"https://api.github.com/repos/matplotlib/matplotlib/issues/4197","number":4197,"state":"open","locked":false,"title":"Generate path strings in C++ for PDF and PS","user":{"login":"mdboom","id":38294,"avatar_url":"https://avatars.githubusercontent.com/u/38294?v=3","gravatar_id":"","url":"https://api.github.com/users/mdboom","html_url":"https://github.com/mdboom","followers_url":"https://api.github.com/users/mdboom/followers","following_url":"https://api.github.com/users/mdboom/following{/other_user}","gists_url":"https://api.github.com/users/mdboom/gists{/gist_id}","starred_url":"https://api.github.com/users/mdboom/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mdboom/subscriptions","organizations_url":"https://api.github.com/users/mdboom/orgs","repos_url":"https://api.github.com/users/mdboom/repos","events_url":"https://api.github.com/users/mdboom/events{/privacy}","received_events_url":"https://api.github.com/users/mdboom/received_events","type":"User","site_admin":false},"body":"This is an optimization I've meant to implement for a long time.\r\n\r\nThe hottest spot performance-wise in the PDF and PS backends is the conversion of Path objects to a string of commands to draw that path.  This has been done in C++ in the SVG backend for a long time -- this generalizes that code to make it usable in the PDF and PS backends as well.","created_at":"2015-03-06T18:12:42Z","updated_at":"2015-03-09T12:42:39Z","closed_at":null,"merged_at":null,"merge_commit_sha":"5d5e6b8dea935e4b679e25990d4daa203337e4cf","assignee":null,"milestone":{"url":"https://api.github.com/repos/matplotlib/matplotlib/milestones/18","html_url":"https://github.com/matplotlib/matplotlib/milestones/next%20point%20release","labels_url":"https://api.github.com/repos/matplotlib/matplotlib/milestones/18/labels","id":970105,"number":18,"title":"next point release","description":"Next minor release.","creator":{"login":"tacaswell","id":199813,"avatar_url":"https://avatars.githubusercontent.com/u/199813?v=3","gravatar_id":"","url":"https://api.github.com/users/tacaswell","html_url":"https://github.com/tacaswell","followers_url":"https://api.github.com/users/tacaswell/followers","following_url":"https://api.github.com/users/tacaswell/following{/other_user}","gists_url":"https://api.github.com/users/tacaswell/gists{/gist_id}","starred_url":"https://api.github.com/users/tacaswell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tacaswell/subscriptions","organizations_url":"https://api.github.com/users/tacaswell/orgs","repos_url":"https://api.github.com/users/tacaswell/repos","events_url":"https://api.github.com/users/tacaswell/events{/privacy}","received_events_url":"https://api.github.com/users/tacaswell/received_events","type":"User","site_admin":false},"open_issues":165,"closed_issues":50,"state":"open","created_at":"2015-02-07T21:22:30Z","updated_at":"2015-03-09T04:03:24Z","due_on":"2015-07-06T04:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/matplotlib/matplotlib/pulls/4197/commits","review_comments_url":"https://api.github.com/repos/matplotlib/matplotlib/pulls/4197/comments","review_comment_url":"https://api.github.com/repos/matplotlib/matplotlib/pulls/comments{/number}","comments_url":"https://api.github.com/repos/matplotlib/matplotlib/issues/4197/comments","statuses_url":"https://api.github.com/repos/matplotlib/matplotlib/statuses/1f0e4ad2fc091955273baf5a5083f66cfd51b74d","head":{"label":"mdboom:faster-paths","ref":"faster-paths","sha":"1f0e4ad2fc091955273baf5a5083f66cfd51b74d","user":{"login":"mdboom","id":38294,"avatar_url":"https://avatars.githubusercontent.com/u/38294?v=3","gravatar_id":"","url":"https://api.github.com/users/mdboom","html_url":"https://github.com/mdboom","followers_url":"https://api.github.com/users/mdboom/followers","following_url":"https://api.github.com/users/mdboom/following{/other_user}","gists_url":"https://api.github.com/users/mdboom/gists{/gist_id}","starred_url":"https://api.github.com/users/mdboom/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mdboom/subscriptions","organizations_url":"https://api.github.com/users/mdboom/orgs","repos_url":"https://api.github.com/users/mdboom/repos","events_url":"https://api.github.com/users/mdboom/events{/privacy}","received_events_url":"https://api.github.com/users/mdboom/received_events","type":"User","site_admin":false},"repo":{"id":1389427,"name":"matplotlib","full_name":"mdboom/matplotlib","owner":{"login":"mdboom","id":38294,"avatar_url":"https://avatars.githubusercontent.com/u/38294?v=3","gravatar_id":"","url":"https://api.github.com/users/mdboom","html_url":"https://github.com/mdboom","followers_url":"https://api.github.com/users/mdboom/followers","following_url":"https://api.github.com/users/mdboom/following{/other_user}","gists_url":"https://api.github.com/users/mdboom/gists{/gist_id}","starred_url":"https://api.github.com/users/mdboom/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mdboom/subscriptions","organizations_url":"https://api.github.com/users/mdboom/orgs","repos_url":"https://api.github.com/users/mdboom/repos","events_url":"https://api.github.com/users/mdboom/events{/privacy}","received_events_url":"https://api.github.com/users/mdboom/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/mdboom/matplotlib","description":"","fork":true,"url":"https://api.github.com/repos/mdboom/matplotlib","forks_url":"https://api.github.com/repos/mdboom/matplotlib/forks","keys_url":"https://api.github.com/repos/mdboom/matplotlib/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mdboom/matplotlib/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mdboom/matplotlib/teams","hooks_url":"https://api.github.com/repos/mdboom/matplotlib/hooks","issue_events_url":"https://api.github.com/repos/mdboom/matplotlib/issues/events{/number}","events_url":"https://api.github.com/repos/mdboom/matplotlib/events","assignees_url":"https://api.github.com/repos/mdboom/matplotlib/assignees{/user}","branches_url":"https://api.github.com/repos/mdboom/matplotlib/branches{/branch}","tags_url":"https://api.github.com/repos/mdboom/matplotlib/tags","blobs_url":"https://api.github.com/repos/mdboom/matplotlib/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mdboom/matplotlib/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mdboom/matplotlib/git/refs{/sha}","trees_url":"https://api.github.com/repos/mdboom/matplotlib/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mdboom/matplotlib/statuses/{sha}","languages_url":"https://api.github.com/repos/mdboom/matplotlib/languages","stargazers_url":"https://api.github.com/repos/mdboom/matplotlib/stargazers","contributors_url":"https://api.github.com/repos/mdboom/matplotlib/contributors","subscribers_url":"https://api.github.com/repos/mdboom/matplotlib/subscribers","subscription_url":"https://api.github.com/repos/mdboom/matplotlib/subscription","commits_url":"https://api.github.com/repos/mdboom/matplotlib/commits{/sha}","git_commits_url":"https://api.github.com/repos/mdboom/matplotlib/git/commits{/sha}","comments_url":"https://api.github.com/repos/mdboom/matplotlib/comments{/number}","issue_comment_url":"https://api.github.com/repos/mdboom/matplotlib/issues/comments{/number}","contents_url":"https://api.github.com/repos/mdboom/matplotlib/contents/{+path}","compare_url":"https://api.github.com/repos/mdboom/matplotlib/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mdboom/matplotlib/merges","archive_url":"https://api.github.com/repos/mdboom/matplotlib/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mdboom/matplotlib/downloads","issues_url":"https://api.github.com/repos/mdboom/matplotlib/issues{/number}","pulls_url":"https://api.github.com/repos/mdboom/matplotlib/pulls{/number}","milestones_url":"https://api.github.com/repos/mdboom/matplotlib/milestones{/number}","notifications_url":"https://api.github.com/repos/mdboom/matplotlib/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mdboom/matplotlib/labels{/name}","releases_url":"https://api.github.com/repos/mdboom/matplotlib/releases{/id}","created_at":"2011-02-20T15:17:10Z","updated_at":"2015-03-03T18:29:21Z","pushed_at":"2015-03-06T18:11:19Z","git_url":"git://github.com/mdboom/matplotlib.git","ssh_url":"git@github.com:mdboom/matplotlib.git","clone_url":"https://github.com/mdboom/matplotlib.git","svn_url":"https://github.com/mdboom/matplotlib","homepage":"","size":212303,"stargazers_count":6,"watchers_count":6,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4,"mirror_url":null,"open_issues_count":1,"forks":4,"open_issues":1,"watchers":6,"default_branch":"master"}},"base":{"label":"matplotlib:master","ref":"master","sha":"4f80cfd45e2e30d795e0574a5e8088fed5334ebb","user":{"login":"matplotlib","id":215947,"avatar_url":"https://avatars.githubusercontent.com/u/215947?v=3","gravatar_id":"","url":"https://api.github.com/users/matplotlib","html_url":"https://github.com/matplotlib","followers_url":"https://api.github.com/users/matplotlib/followers","following_url":"https://api.github.com/users/matplotlib/following{/other_user}","gists_url":"https://api.github.com/users/matplotlib/gists{/gist_id}","starred_url":"https://api.github.com/users/matplotlib/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/matplotlib/subscriptions","organizations_url":"https://api.github.com/users/matplotlib/orgs","repos_url":"https://api.github.com/users/matplotlib/repos","events_url":"https://api.github.com/users/matplotlib/events{/privacy}","received_events_url":"https://api.github.com/users/matplotlib/received_events","type":"Organization","site_admin":false},"repo":{"id":1385122,"name":"matplotlib","full_name":"matplotlib/matplotlib","owner":{"login":"matplotlib","id":215947,"avatar_url":"https://avatars.githubusercontent.com/u/215947?v=3","gravatar_id":"","url":"https://api.github.com/users/matplotlib","html_url":"https://github.com/matplotlib","followers_url":"https://api.github.com/users/matplotlib/followers","following_url":"https://api.github.com/users/matplotlib/following{/other_user}","gists_url":"https://api.github.com/users/matplotlib/gists{/gist_id}","starred_url":"https://api.github.com/users/matplotlib/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/matplotlib/subscriptions","organizations_url":"https://api.github.com/users/matplotlib/orgs","repos_url":"https://api.github.com/users/matplotlib/repos","events_url":"https://api.github.com/users/matplotlib/events{/privacy}","received_events_url":"https://api.github.com/users/matplotlib/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/matplotlib/matplotlib","description":"matplotlib: plotting with Python","fork":false,"url":"https://api.github.com/repos/matplotlib/matplotlib","forks_url":"https://api.github.com/repos/matplotlib/matplotlib/forks","keys_url":"https://api.github.com/repos/matplotlib/matplotlib/keys{/key_id}","collaborators_url":"https://api.github.com/repos/matplotlib/matplotlib/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/matplotlib/matplotlib/teams","hooks_url":"https://api.github.com/repos/matplotlib/matplotlib/hooks","issue_events_url":"https://api.github.com/repos/matplotlib/matplotlib/issues/events{/number}","events_url":"https://api.github.com/repos/matplotlib/matplotlib/events","assignees_url":"https://api.github.com/repos/matplotlib/matplotlib/assignees{/user}","branches_url":"https://api.github.com/repos/matplotlib/matplotlib/branches{/branch}","tags_url":"https://api.github.com/repos/matplotlib/matplotlib/tags","blobs_url":"https://api.github.com/repos/matplotlib/matplotlib/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/matplotlib/matplotlib/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/matplotlib/matplotlib/git/refs{/sha}","trees_url":"https://api.github.com/repos/matplotlib/matplotlib/git/trees{/sha}","statuses_url":"https://api.github.com/repos/matplotlib/matplotlib/statuses/{sha}","languages_url":"https://api.github.com/repos/matplotlib/matplotlib/languages","stargazers_url":"https://api.github.com/repos/matplotlib/matplotlib/stargazers","contributors_url":"https://api.github.com/repos/matplotlib/matplotlib/contributors","subscribers_url":"https://api.github.com/repos/matplotlib/matplotlib/subscribers","subscription_url":"https://api.github.com/repos/matplotlib/matplotlib/subscription","commits_url":"https://api.github.com/repos/matplotlib/matplotlib/commits{/sha}","git_commits_url":"https://api.github.com/repos/matplotlib/matplotlib/git/commits{/sha}","comments_url":"https://api.github.com/repos/matplotlib/matplotlib/comments{/number}","issue_comment_url":"https://api.github.com/repos/matplotlib/matplotlib/issues/comments{/number}","contents_url":"https://api.github.com/repos/matplotlib/matplotlib/contents/{+path}","compare_url":"https://api.github.com/repos/matplotlib/matplotlib/compare/{base}...{head}","merges_url":"https://api.github.com/repos/matplotlib/matplotlib/merges","archive_url":"https://api.github.com/repos/matplotlib/matplotlib/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/matplotlib/matplotlib/downloads","issues_url":"https://api.github.com/repos/matplotlib/matplotlib/issues{/number}","pulls_url":"https://api.github.com/repos/matplotlib/matplotlib/pulls{/number}","milestones_url":"https://api.github.com/repos/matplotlib/matplotlib/milestones{/number}","notifications_url":"https://api.github.com/repos/matplotlib/matplotlib/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/matplotlib/matplotlib/labels{/name}","releases_url":"https://api.github.com/repos/matplotlib/matplotlib/releases{/id}","created_at":"2011-02-19T03:17:12Z","updated_at":"2015-03-09T12:12:53Z","pushed_at":"2015-03-09T01:44:01Z","git_url":"git://github.com/matplotlib/matplotlib.git","ssh_url":"git@github.com:matplotlib/matplotlib.git","clone_url":"https://github.com/matplotlib/matplotlib.git","svn_url":"https://github.com/matplotlib/matplotlib","homepage":"http://matplotlib.org/","size":260944,"stargazers_count":2312,"watchers_count":2312,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1162,"mirror_url":null,"open_issues_count":466,"forks":1162,"open_issues":466,"watchers":2312,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/matplotlib/matplotlib/pulls/4197"},"html":{"href":"https://github.com/matplotlib/matplotlib/pull/4197"},"issue":{"href":"https://api.github.com/repos/matplotlib/matplotlib/issues/4197"},"comments":{"href":"https://api.github.com/repos/matplotlib/matplotlib/issues/4197/comments"},"review_comments":{"href":"https://api.github.com/repos/matplotlib/matplotlib/pulls/4197/comments"},"review_comment":{"href":"https://api.github.com/repos/matplotlib/matplotlib/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/matplotlib/matplotlib/pulls/4197/commits"},"statuses":{"href":"https://api.github.com/repos/matplotlib/matplotlib/statuses/1f0e4ad2fc091955273baf5a5083f66cfd51b74d"}}}}