Re: Patch for porting Elinks to OpenSolaris
Muktha Narayan <[email protected]> Tue, 24 Feb 2009 14:51:25 +0530
| Newsgroups | gmane.comp.web.links |
|---|---|
| Message-ID | <[email protected]> |
Hi, Kalle Olavi Niemitalo wrote: > "Mark A. Carlson" <[email protected]> writes: > > >> +#if defined (__SUNPRO_C) >> +static inline void >> +#else >> inline void >> +#endif >> load_frames(struct session *ses, struct document_view *doc_view) >> > > This looks like <http://bugzilla.elinks.cz/show_bug.cgi?id=1047>. > That bug was reported against ELinks 0.12pre1 though. > I haven't heard about such problems with 0.11.5 before. > It looks like 0.10.6 has the same bug; can you confirm? > > Yes, elinks-0.10.6 has the same bug (in session.c and conv.c). > Because ELinks is violating a C99 requirement, rather than > something specific to Sun, I don't think it's right to make an > exception for the Sun compiler. Instead, we should make the > functions not inline and measure how that affects the speed. > If it hurts too much, then define e.g. static inline int > inline_elinks_ulongcat() and make both int elinks_ulongcat() > and int elinks_longcat() call that. GCC should generate from > that approximately the same code as from the current sources. > Attached is the modified patch incorporating the above comments. Please confirm if the patch is acceptable. Regards Muktha _______________________________________________ elinks-dev mailing list [email protected] http://linuxfromscratch.org/mailman/listinfo/elinks-dev
elinks.patch
(text/x-patch, 1.5 KB)
--- elinks-0.11.5/src/session/session.c 2009-02-23 03:50:00.852630689 -0800
+++ elinks-0.11.5-new/src/session/session.c 2009-02-23 03:49:38.152751175 -0800
@@ -423,7 +423,7 @@ load_ecmascript_imports(struct session *
#define load_ecmascript_imports(ses, doc_view)
#endif
-inline void
+void
load_frames(struct session *ses, struct document_view *doc_view)
{
struct document *document = doc_view->document;
--- elinks-0.11.5/src/util/conv.c 2009-02-23 03:54:45.261625605 -0800
+++ elinks-0.11.5-new/src/util/conv.c 2009-02-24 00:10:55.615002838 -0800
@@ -46,8 +46,8 @@
*/
/* The function returns 0 if OK or width needed for the whole number to fit
* there, if it had to be truncated. A negative value signs an error. */
-int inline
-elinks_ulongcat(unsigned char *s, unsigned int *slen,
+static int inline
+inline_elinks_ulongcat(unsigned char *s, unsigned int *slen,
unsigned long number, unsigned int width,
unsigned char fillchar, unsigned int base,
unsigned int upper)
@@ -103,8 +103,17 @@ elinks_ulongcat(unsigned char *s, unsign
return ret;
}
+int
+elinks_ulongcat(unsigned char *s, unsigned int *slen,
+ unsigned long number, unsigned int width,
+ unsigned char fillchar, unsigned int base,
+ unsigned int upper)
+{
+ inline_elinks_ulongcat(s, slen, number, width, fillchar, base, upper);
+}
+
/* Similar to elinks_ulongcat() but for long number. */
-int inline
+int
elinks_longcat(unsigned char *s, unsigned int *slen,
long number, unsigned int width,
unsigned char fillchar, unsigned int base,