r7017 chris_y - in /trunk/netsurf/amiga: dist/Install pkg/makepackage
by netsurf@semichrome.net
Author: chris_y
Date: Tue Mar 31 11:39:49 2009
New Revision: 7017
URL: http://source.netsurf-browser.org?rev=7017&view=rev
Log:
More shared objects...
Modified:
trunk/netsurf/amiga/dist/Install
trunk/netsurf/amiga/pkg/makepackage
Modified: trunk/netsurf/amiga/dist/Install
URL: http://source.netsurf-browser.org/trunk/netsurf/amiga/dist/Install?rev=70...
==============================================================================
--- trunk/netsurf/amiga/dist/Install (original)
+++ trunk/netsurf/amiga/dist/Install Tue Mar 31 11:39:49 2009
@@ -266,7 +266,7 @@
(foreach "SObjs" "#?"
(complete #complete)
(p_copysobj @each-name)
- (set #complete (+ #complete 4))
+ (set #complete (+ #complete 3))
)
)
)
Modified: trunk/netsurf/amiga/pkg/makepackage
URL: http://source.netsurf-browser.org/trunk/netsurf/amiga/pkg/makepackage?rev...
==============================================================================
--- trunk/netsurf/amiga/pkg/makepackage (original)
+++ trunk/netsurf/amiga/pkg/makepackage Tue Mar 31 11:39:49 2009
@@ -20,5 +20,5 @@
makedir ram:NetSurf/Rexx
copy amiga/dist/Rexx/~(.svn) ram:NetSurf/Rexx/ COM
makedir ram:NetSurf/SObjs
-copy sobjs:libgcc.so sobjs:libc.so sobjs:libjpeg.so sobjs:libpthread.so sobjs:libexpat.so sobjs:libhubbub.so sobjs:libhpdf-2.2.0.so.0.0 sobjs:libmng.so.1 sobjs:liblcms.so sobjs:libxml2-2.6.so ram:NetSurf/SObjs clone
+copy sobjs:libgcc.so sobjs:libc.so sobjs:libjpeg.so sobjs:libpthread.so sobjs:libexpat.so sobjs:libhubbub.so sobjs:libhpdf-2.2.0.so.0.0 sobjs:libmng.so.1 sobjs:liblcms.so sobjs:libxml2-2.6.so sobjs:libparserutils.so sobjs:libnsgif.so sobjs:libnsbmp.so ram:NetSurf/SObjs clone
;sobjs:libcurl-7.16.so sobjs:libssl-0.9.8.so
14 years, 2 months
r7016 tlsa - /trunk/netsurf/desktop/plotters.h
by netsurf@semichrome.net
Author: tlsa
Date: Tue Mar 31 10:17:08 2009
New Revision: 7016
URL: http://source.netsurf-browser.org?rev=7016&view=rev
Log:
Add some incomplete documentation for path plotter. Better documentation of rectangle and fill plotters.plotters.h
Modified:
trunk/netsurf/desktop/plotters.h
Modified: trunk/netsurf/desktop/plotters.h
URL: http://source.netsurf-browser.org/trunk/netsurf/desktop/plotters.h?rev=70...
==============================================================================
--- trunk/netsurf/desktop/plotters.h (original)
+++ trunk/netsurf/desktop/plotters.h Tue Mar 31 10:17:08 2009
@@ -41,13 +41,17 @@
* disc - Plots a circle, centered on (x,y), which is optionally filled.
* line - Plots a line from (x0,y0) to (x1,y1). Coordinates are at
* centre of line width/thickness.
- * path -
+ * path - Plots a path consisting of cubic Bezier curves. Line colour is
+ * given by c and fill colour is given by fill.
* polygon - Plots a filled polygon with straight lines between points.
* The lines around the edge of the ploygon are not plotted. The
* polygon is filled with the non-zero winding rule.
* rectangle - Plots a rectangle outline. The line can be solid, dotted or
- * dashed.
- * fill - Plots a filled rectangle.
+ * dashed. Top left corner at (x0,y0) and rectangle has given
+ * width and height.
+ * fill - Plots a filled rectangle. Top left corner at (x0,y0), bottom
+ * right corner at (x1,y1). Note: (x0,y0) is inside filled area,
+ * but (x1,y1) is below and to the right. See diagram below.
* clip - Sets a clip rectangle for subsequent plots.
* text - Plots text. (x,y) is the coordinate of the left hand side of
* the text's baseline. The text is UTF-8 encoded. The colour, c,
@@ -76,8 +80,8 @@
* redraw. It tries to avoid plotting to the same area
* more than once. See desktop/knockout.c
*
- * Coordinates are from top left and (0,0) is the top left grid denomination.
- * If a "fill" is drawn from (0,0) to (4,3), the result is:
+ * Coordinates are from top left of canvas and (0,0) is the top left grid
+ * denomination. If a "fill" is drawn from (0,0) to (4,3), the result is:
*
* 0 1 2 3 4 5
* +-+-+-+-+-+-
14 years, 2 months
r7015 jmb - in /trunk/dom: Makefile libdom.pc.in
by netsurf@semichrome.net
Author: jmb
Date: Tue Mar 31 10:08:28 2009
New Revision: 7015
URL: http://source.netsurf-browser.org?rev=7015&view=rev
Log:
Pkg-config control file.
Add requirements based upon build configuration.
Added:
trunk/dom/libdom.pc.in
Modified:
trunk/dom/Makefile
Modified: trunk/dom/Makefile
URL: http://source.netsurf-browser.org/trunk/dom/Makefile?rev=7015&r1=7014&r2=...
==============================================================================
--- trunk/dom/Makefile (original)
+++ trunk/dom/Makefile Tue Mar 31 10:08:28 2009
@@ -36,3 +36,12 @@
INSTALL_ITEMS := $(INSTALL_ITEMS) /lib/pkgconfig:lib$(COMPONENT).pc.in
INSTALL_ITEMS := $(INSTALL_ITEMS) /lib:$(BUILDDIR)/lib$(COMPONENT)$(LIBEXT)
+
+ifeq ($(WITH_LIBXML_BINDING),yes)
+ REQUIRED_PKGS := $(REQUIRED_PKGS) libxml-2.0
+endif
+
+ifeq ($(WITH_HUBBUB_BINDING),yes)
+ REQUIRED_PKGS := $(REQUIRED_PKGS) libhubbub
+endif
+
Added: trunk/dom/libdom.pc.in
URL: http://source.netsurf-browser.org/trunk/dom/libdom.pc.in?rev=7015&view=auto
==============================================================================
--- trunk/dom/libdom.pc.in (added)
+++ trunk/dom/libdom.pc.in Tue Mar 31 10:08:28 2009
@@ -1,0 +1,11 @@
+prefix=PREFIX
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: libdom
+Description: W3C DOM implementation
+Version: 0.0.1
+REQUIRED
+Libs: -L${libdir} -ldom
+Cflags: -I${includedir}
14 years, 2 months
r7014 jmb - /trunk/tools/buildsystem/makefiles/Makefile.top
by netsurf@semichrome.net
Author: jmb
Date: Tue Mar 31 10:07:40 2009
New Revision: 7014
URL: http://source.netsurf-browser.org?rev=7014&view=rev
Log:
Allow required packages to be constructed based upon the build configuration
Modified:
trunk/tools/buildsystem/makefiles/Makefile.top
Modified: trunk/tools/buildsystem/makefiles/Makefile.top
URL: http://source.netsurf-browser.org/trunk/tools/buildsystem/makefiles/Makef...
==============================================================================
--- trunk/tools/buildsystem/makefiles/Makefile.top (original)
+++ trunk/tools/buildsystem/makefiles/Makefile.top Tue Mar 31 10:07:40 2009
@@ -24,6 +24,7 @@
# HOST Host platform identifier
# PREFIX Absolute installation path prefix
# (defaults to /usr/local)
+# REQUIRED_PKGS List of required pkg-config packages
#
# The client may also override all toolchain settings, including:
#
@@ -216,9 +217,18 @@
#
# We also permit a trailing ';' in the file list.
+__comma := ,
+__empty :=
+__space := $(empty) $(empty)
+__required = $(subst $(__space),$(__comma) ,$(strip $(REQUIRED_PKGS)))
+
# Install a pkg-config control file ($1) to the specified location ($2)
define install_pkgconfig
$(Q)$(SED) -e 's#PREFIX#$(PREFIX)#' $1 >$(BUILDDIR)/$(1:.in=)
+ $(if $(REQUIRED_PKGS), \
+ $(Q)$(SED) -i -e 's#REQUIRED#Requires: $(__required)#' \
+ $(BUILDDIR)/$(1:.in=), \
+ $(Q)$(SED) -i -e 's#REQUIRED##' $(BUILDDIR)/$(1:.in=))
$(INSTALL) $(INSTALLFLAGS) -m 644 $(BUILDDIR)/$(1:.in=) $2
endef
14 years, 2 months
r7013 struggleyb - in /branches/struggleyb/domts-transform-perl: DOMTSHandler.pm testutils/ testutils/load.c testutils/misc.h testutils/test.h transform.pl
by netsurf@semichrome.net
Author: struggleyb
Date: Tue Mar 31 09:44:00 2009
New Revision: 7013
URL: http://source.netsurf-browser.org?rev=7013&view=rev
Log:
Add some stubs code, and now the transform script can convert most interfaces.
Added:
branches/struggleyb/domts-transform-perl/testutils/
branches/struggleyb/domts-transform-perl/testutils/load.c
branches/struggleyb/domts-transform-perl/testutils/misc.h
branches/struggleyb/domts-transform-perl/testutils/test.h
Modified:
branches/struggleyb/domts-transform-perl/DOMTSHandler.pm
branches/struggleyb/domts-transform-perl/transform.pl
Modified: branches/struggleyb/domts-transform-perl/DOMTSHandler.pm
URL: http://source.netsurf-browser.org/branches/struggleyb/domts-transform-per...
==============================================================================
--- branches/struggleyb/domts-transform-perl/DOMTSHandler.pm (original)
+++ branches/struggleyb/domts-transform-perl/DOMTSHandler.pm Tue Mar 31 09:44:00 2009
@@ -8,9 +8,11 @@
use XML::XPath::XMLParser;
our $description = 0;
+our $string_index = 0;
+our $ret_index = 0;
our %special = (
# Some of the type are not defined now!
- boolean => "int ",
+ boolean => "bool ",
int => "int ",
DOMString => "dom_string *",
List => "list *",
@@ -19,11 +21,17 @@
NamedNodeMap => "dom_namednodemap *",
NodeList => "dom_nodelist *"
);
+our %special_prefix = (
+ DOMString => "dom_string",
+ DOMImplementation => "dom_implementation",
+ NamedNodeMap => "dom_namednodemap",
+ NodeList => "dom_nodelist"
+);
sub new {
my $type = shift;
- my %dtd = shift;
- my $dd = XML::XPath->new(filename => $dtd{"dtd"});
+ my $dtd = shift;
+ my $dd = XML::XPath->new(filename => $dtd);
my $self = {
dd => $dd,
context => [],
@@ -36,16 +44,33 @@
my ($self, $element) = @_;
my $en = $element->{Name};
+
+ my $dd = $self->{dd};
my $ct = $self->{context};
push(@$ct, $en);
switch ($en) {
+ case "test" {
+ ;
+ }
case "metadata" {
print "/*\n";
}
case "var" {
generate_var($element->{Attributes});
+ }
+
+ case "load" {
+ generate_load($element->{Attributes});
+ }
+ # The catch other case
+ else {
+ # we don't care the comment nodes
+ @tmp = @$ct;
+ if ($tmp[1] ne "metadata") {
+ generate_interface($dd, $en, $element->{Attributes});
+ }
}
}
}
@@ -60,6 +85,9 @@
case "metadata" {
print "*/\n";
generate_main();
+ }
+ case "test" {
+ print "\n\}\n";
}
}
}
@@ -95,12 +123,17 @@
sub generate_main {
print << "__EOF__"
+#include <stdio.h>
+#include <stdbool.h>
+
#include <dom/dom.h>
#include <dom/functypes.h>
-#include <dom/bindings/parser.h>
+
+#include <test.h>
int main(int argc, char **argv)
{
+ char buffer[1024];
__EOF__
}
@@ -116,10 +149,124 @@
print "\t$type$ats{'name'}";
if (exists $ats{"value"}) {
- print " = $ats{'value'}\n";
+ print " = $ats{'value'};\n";
} else {
- print "\n";
- }
+ print ";\n";
+ }
+}
+
+sub generate_load {
+ my $a = shift;
+ my %ats = %$a;
+ my $doc = $ats{"var"};
+
+ # define the test file path, only XML now
+ # Attention: I intend to copy the test files to the program excuting dir
+ print "\tchar *test = \"files/$ats{'href'}.xml\";\n\n";
+ print << "__EOF__"
+ dom_exception exp;
+ $doc = load(test, $ats{'willBeModified'});
+ if ($doc == NULL) {
+ return 1;
+ }
+__EOF__
+}
+
+sub generate_interface {
+ my ($dd, $en, $a) = @_;
+ my %ats = %$a;
+
+ if (exists $ats{'interface'}) {
+ my $ns = $dd->find("/library/interface[\@name=\"$ats{'interface'}\"]/method[\@name=\"$en\"]");
+ if ($ns->size() != 0) {
+ my $node = $ns->get_node(1);
+ generate_method($en, $dd, $node, %ats);
+ } else {
+ my $ns = $dd->find("/library/interface[\@name=\"$ats{'interface'}\"]/attribute[\@name=\"$en\"]");
+ if ($ns->size() != 0) {
+ my $node = $ns->get_node(1);
+ generate_attribute_fetcher($en, $dd, $node, %ats);
+ }
+ }
+ } else {
+ my $ns = $dd->find("/library/interface/method[\@name=\"$en\"]");
+ if ($ns->size() != 0) {
+ my $node = $ns->get_node(1);
+ generate_method($en, $dd, $node, %ats);
+ } else {
+ my $ns = $dd->find("/library/interface/attribute[\@name=\"$en\"]");
+ if ($ns->size() != 0) {
+ my $node = $ns->get_node(1);
+ generate_attribute_fetcher($en, $dd, $node, %ats);
+ }
+ }
+ }
+}
+
+sub generate_method {
+ my ($en, $dd, $node, %ats) = @_;
+ if (! exists $ats{'interface'}) {
+ my $n = $node;
+ while($n->getLocalName() ne "interface") {
+ $n = $n->getParentNode();
+ }
+ $ats{'interface'} = $n->getAttribute("name");
+ }
+
+ $method = to_cmethod($ats{'interface'}, $en);
+
+ my $ns = $dd->find("parameters/param", $node);
+ my $params = "$ats{'obj'}";
+ for ($count = 1; $count <= $ns->size; $count++) {
+ my $n = $ns->get_node($count);
+ my $p = $n->getAttribute("name");
+ my $t = $n->getAttribute("type");
+
+ if ($t eq "DOMString") {
+ generate_domstring($ats{$p});
+ my $num = $string_index - 1;
+ $params = $params.", string$num";
+ next;
+ }
+
+ $params = $params.", $ats{$p}";
+ }
+
+ #$ns = $dd->find("returns", $node);
+ #my $n = $ns->get_node(1);
+ #my $t = $n->getAttribute("type");
+ # declare the return value
+ #my $tp = type_to_ctype($t);
+ #print "\t$tp ret$ret_index;\n";
+ $params = $params.", \&$ats{'var'}";
+
+ print << "__EOF__"
+ exp = $method($params);
+ if (exp != DOM_NO_ERR) {
+ fprintf(stderr, "Exception raised from %s\\n", "$method");
+ return exp;
+ }
+__EOF__
+}
+
+sub generate_attribute_fetcher {
+
+}
+
+sub generate_domstring {
+ my $str = shift;
+ $string_index = $string_index + 1;
+
+ print << "__EOF__"
+ char *string$string_index = $str;
+ dom_string *dstring$string_index;
+ exp = dom_string_create(myrealloc, NULL, string$string_index,
+ strlen(string$string_index), &dstring$string_index);
+ if (exp != DOM_NO_ERR) {
+ fprintf(stderr, "Can't create DOMString\\n");
+ return exp;
+ }
+__EOF__
}
sub type_to_ctype {
@@ -141,11 +288,21 @@
return "dom".$type." *";
}
-sub generate_load {
- my $a = shift;
- my %ats = %$a;
-
-
+sub to_cmethod {
+ my ($type, $m) = @_;
+ my $prefix;
+
+ if (exists $special_prefix{$type}) {
+ $prefix = $special_prefix{$type};
+ } else {
+ $type =~ s/[A-Z]/_$&/g;
+ $prefix = lc $type;
+ $prefix = "dom".$prefix;
+ }
+
+ $m =~ s/[A-Z]/_$&/g;
+ $m = lc $m;
+ return $prefix."_".$m;
}
1;
Added: branches/struggleyb/domts-transform-perl/testutils/load.c
URL: http://source.netsurf-browser.org/branches/struggleyb/domts-transform-per...
==============================================================================
--- branches/struggleyb/domts-transform-perl/testutils/load.c (added)
+++ branches/struggleyb/domts-transform-perl/testutils/load.c Tue Mar 31 09:44:00 2009
@@ -1,0 +1,78 @@
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <dom/dom.h>
+#include <xmlparser.h>
+
+#include "misc.h"
+
+void *myrealloc(void *ptr, size_t len, void *pw)
+{
+ UNUSED(pw);
+
+ return realloc(ptr, len);
+}
+
+void mymsg(uint32_t severity, void *ctx, const char *msg, ...)
+{
+ va_list l;
+
+ UNUSED(ctx);
+
+ va_start(l, msg);
+
+ fprintf(stderr, "%d: ", severity);
+ vfprintf(stderr, msg, l);
+ fprintf(stderr, "\n");
+}
+
+dom_document *load(char *file, bool willBeModified)
+{
+ dom_xml_parser *parser = NULL;
+ FILE *handle = NULL;
+ int readed;
+ dom_xml_error error;
+ dom_document *ret;
+ char buffer[1024];
+
+ UNUSED(willBeModified);
+ parser = dom_xml_parser_create("UTF-8", NULL,
+ myrealloc, NULL, mymsg, NULL);
+ if (parser == NULL) {
+ fprintf(stderr, "Can't create XMLParser\n");
+ return NULL;
+ }
+
+ handle = fopen(file, "r");
+ if (handle == NULL) {
+ fprintf(stderr, "Can't open test input file: %s\n", file);
+ return NULL;
+ }
+ readed = fread(buffer, 1024, 1, handle);
+ error = dom_xml_parser_parse_chunk(parser, buffer, readed);
+ if (error != DOM_XML_OK) {
+ fprintf(stderr, "Parsing errors occur\n");
+ return NULL;
+ }
+
+ while(readed == 1024) {
+ readed = fread(buffer, 1024, 1, handle);
+ error = dom_xml_parser_parse_chunk(parser, buffer, readed);
+ if (error != DOM_XML_OK) {
+ fprintf(stderr, "Parsing errors occur\n");
+ return NULL;
+ }
+ }
+
+ error = dom_xml_parser_completed(parser);
+ if (error != DOM_XML_OK) {
+ fprintf(stderr, "Parsing error when construct DOM\n");
+ return NULL;
+ }
+
+ ret = dom_xml_parser_get_document(parser);
+ dom_xml_parser_destroy(parser);
+
+ return ret;
+}
Added: branches/struggleyb/domts-transform-perl/testutils/misc.h
URL: http://source.netsurf-browser.org/branches/struggleyb/domts-transform-per...
==============================================================================
--- branches/struggleyb/domts-transform-perl/testutils/misc.h (added)
+++ branches/struggleyb/domts-transform-perl/testutils/misc.h Tue Mar 31 09:44:00 2009
@@ -1,0 +1,6 @@
+#ifndef _misc__
+#define _misc__
+
+#define UNUSED(x) (x) = (x)
+
+#endif
Added: branches/struggleyb/domts-transform-perl/testutils/test.h
URL: http://source.netsurf-browser.org/branches/struggleyb/domts-transform-per...
==============================================================================
--- branches/struggleyb/domts-transform-perl/testutils/test.h (added)
+++ branches/struggleyb/domts-transform-perl/testutils/test.h Tue Mar 31 09:44:00 2009
@@ -1,0 +1,7 @@
+#ifndef _test_utils__
+#define _test_utils__
+
+void *myrealloc(void *ptr, size_t len, void *pw);
+dom_document *load(char *file, bool willBeModified);
+
+#endif
Modified: branches/struggleyb/domts-transform-perl/transform.pl
URL: http://source.netsurf-browser.org/branches/struggleyb/domts-transform-per...
==============================================================================
--- branches/struggleyb/domts-transform-perl/transform.pl (original)
+++ branches/struggleyb/domts-transform-perl/transform.pl Tue Mar 31 09:44:00 2009
@@ -12,6 +12,6 @@
use XML::Parser::PerlSAX;
use DOMTSHandler;
-my $handler = DOMTSHandler->new(dtd => "dom1-interfaces.xml");
+my $handler = DOMTSHandler->new("dom1-interfaces.xml");
my $parser = XML::Parser::PerlSAX->new(Handler => $handler);
$parser->parse(Source => {SystemId => "test.xml"});
14 years, 2 months
r7010 jmb - /trunk/netsurf/Docs/BUILDING-GTK
by netsurf@semichrome.net
Author: jmb
Date: Tue Mar 31 09:19:13 2009
New Revision: 7010
URL: http://source.netsurf-browser.org?rev=7010&view=rev
Log:
Fix path
Modified:
trunk/netsurf/Docs/BUILDING-GTK
Modified: trunk/netsurf/Docs/BUILDING-GTK
URL: http://source.netsurf-browser.org/trunk/netsurf/Docs/BUILDING-GTK?rev=701...
==============================================================================
--- trunk/netsurf/Docs/BUILDING-GTK (original)
+++ trunk/netsurf/Docs/BUILDING-GTK Tue Mar 31 09:19:13 2009
@@ -58,7 +58,7 @@
pkg-config that will search here, so you will either need to change where
these libraries install, or do the following before building NetSurf itself;
- $ PKG_CONFIG_PATH=/usr/local/pkgconfig
+ $ PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
$ export PKG_CONFIG_PATH
Package installation
14 years, 2 months
r7009 rjek - /trunk/netsurf/Docs/BUILDING-GTK
by netsurf@semichrome.net
Author: rjek
Date: Tue Mar 31 09:15:47 2009
New Revision: 7009
URL: http://source.netsurf-browser.org?rev=7009&view=rev
Log:
Add paragraph about some distributions having a pkg-config that does not include /usr/local as a default search location, and how to solve this.
Modified:
trunk/netsurf/Docs/BUILDING-GTK
Modified: trunk/netsurf/Docs/BUILDING-GTK
URL: http://source.netsurf-browser.org/trunk/netsurf/Docs/BUILDING-GTK?rev=700...
==============================================================================
--- trunk/netsurf/Docs/BUILDING-GTK (original)
+++ trunk/netsurf/Docs/BUILDING-GTK Tue Mar 31 09:15:47 2009
@@ -53,6 +53,13 @@
Hopefully they will soon be released with downloadable tarballs and packaged
in common distros. For now, you'll have to make do with svn checkouts.
+ Some of NetSurf's own libraries will be installed in /usr/local/ by default.
+ Fedora, and perhaps some other distributions of Linux, do not ship a
+ pkg-config that will search here, so you will either need to change where
+ these libraries install, or do the following before building NetSurf itself;
+
+ $ PKG_CONFIG_PATH=/usr/local/pkgconfig
+ $ export PKG_CONFIG_PATH
Package installation
----------------------
14 years, 2 months
r7008 tlsa - /trunk/netsurf/desktop/browser.c
by netsurf@semichrome.net
Author: tlsa
Date: Tue Mar 31 07:55:23 2009
New Revision: 7008
URL: http://source.netsurf-browser.org?rev=7008&view=rev
Log:
Use tabs for indentation.
Modified:
trunk/netsurf/desktop/browser.c
Modified: trunk/netsurf/desktop/browser.c
URL: http://source.netsurf-browser.org/trunk/netsurf/desktop/browser.c?rev=700...
==============================================================================
--- trunk/netsurf/desktop/browser.c (original)
+++ trunk/netsurf/desktop/browser.c Tue Mar 31 07:55:23 2009
@@ -1099,29 +1099,29 @@
const char *frag)
{
char *url_buf;
-
- assert(bw);
- assert(url);
-
- if (frag == NULL) {
- /* With no fragment, we may as well pass url straight through
- * saving a malloc, copy, free cycle.
- */
- gui_window_set_url(bw->window, url);
- } else {
- url_buf = malloc(strlen(url) + 1 /* # */ +
- strlen(frag) + 1 /* \0 */);
- if (url_buf != NULL) {
- /* This sprintf is safe because of the above size
- * calculation, thus we don't need snprintf
- */
- sprintf(url_buf, "%s#%s", url, frag);
- gui_window_set_url(bw->window, url_buf);
- free(url_buf);
- } else {
- warn_user("NoMemory", 0);
- }
- }
+
+ assert(bw);
+ assert(url);
+
+ if (frag == NULL) {
+ /* With no fragment, we may as well pass url straight through
+ * saving a malloc, copy, free cycle.
+ */
+ gui_window_set_url(bw->window, url);
+ } else {
+ url_buf = malloc(strlen(url) + 1 /* # */ +
+ strlen(frag) + 1 /* \0 */);
+ if (url_buf != NULL) {
+ /* This sprintf is safe because of the above size
+ * calculation, thus we don't need snprintf
+ */
+ sprintf(url_buf, "%s#%s", url, frag);
+ gui_window_set_url(bw->window, url_buf);
+ free(url_buf);
+ } else {
+ warn_user("NoMemory", 0);
+ }
+ }
}
/**
14 years, 2 months